如何在Java中将ArrayList转换为JSON数组



我想把我收集的tagID放在epc(数组中的json对象(中,并将默认的天线端口值设置为"1〃;但每次我的循环运行时,所有的tagID都被卡在一行上。

到目前为止,这是我的代码。

JSONObject jsonObject = new JSONObject();
try {
//Settings up array
JSONObject jObj = new JSONObject();
JSONArray jArry = new JSONArray();

//this arraylist is contains of arraylist with tagIDs 
ArrayList<InventoryListItem> arr = Application.tagsReadInventory;

int position = 0;

//this arraylist is where i put my collected tagIDs
ArrayList<String> tagIDs = new ArrayList<>();

//looping to get tagIDs from "Application.tagsReadInventory" and put it in tagIDs arraylist
for (position = 0; position < arr.size(); position++) {
tagIDs.add(arr.get(position).getTagID());
jObj.put("epc",tagIDs);
jObj.put("antennaPort", 1);
jArry.put(jObj);
}

jsonObject.put("reader_name", ReaderIP);
jsonObject.put("mac_address", "asd");
jsonObject.put("tag_reads", jArry);

} catch (JSONException e) {
e.printStackTrace();
}

我想要这样的json格式。

{
"reader_name": "192.168.1.332",
"mac_address": "asd",
"tag_reads": [
{
"epc": "474103534923303031343431",
"antennaPort": 1
},
{
"epc": "474103534923303031333232",
"antennaPort": 1
},
{
"epc": "47410353492330303035303D",
"antennaPort": 1
}
]
}

但这就是我的结果。

{
"reader_name": "192.168.1.44",
"mac_address": "asd",
"tag_reads": [
{
"epc": "474103534923303031343431","474103534923303031343431","474103534923303031343431"
"antennaPort": 1
}
]
}

我已经添加了一个新的foreach来获取我的标签ID数组列表,它非常有效。

JSONObject jsonObject = new JSONObject();
try {

//Settings up array
JSONArray jArry = new JSONArray();

//this arraylist is contains of arraylist with tagIDs
ArrayList<InventoryListItem> arr = Application.tagsReadInventory;

int position = 0;

//this arraylist is where i put my collected tagIDs from "Application.tagsReadInventory"
ArrayList<String> tagIDs = new ArrayList<>();

//looping to get tagIDs from "Application.tagsReadInventory" and put it in tagIDs arraylist
for (position = 0; position < arr.size(); position++) {                        
tagIDs.add(arr.get(position).getTagID());
}

//get each of the list inside tagIDs arraylist
for (String tags : tagIDs) {
JSONObject jObj = new JSONObject();
jObj.put("epc",tags);
jObj.put("antennaPort", 1);
jArry.put(jObj);
}

jsonObject.put("reader_name", ReaderIP);
jsonObject.put("mac_address", "asd");
jsonObject.put("tag_reads", jArry);

} catch (JSONException e) {
e.printStackTrace();
}

最新更新