Java 生成错误的JSON(每个元素都重复数据)
T3阵列中的数据对每个元素都是重复的 这是我的程序,我试图在其中生成JSON,但我看到T3数组的值对每个元素都是重复的Java 生成错误的JSON(每个元素都重复数据),java,json,Java,Json,T3阵列中的数据对每个元素都是重复的 这是我的程序,我试图在其中生成JSON,但我看到T3数组的值对每个元素都是重复的 package com; import java.util.LinkedHashMap; import java.util.LinkedList; import java.util.Map; import java.util.StringTokenizer; import org.json.JSONArray; import org.json.JSONExcept
package com;
import java.util.LinkedHashMap;
import java.util.LinkedList;
import java.util.Map;
import java.util.StringTokenizer;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
public class Test {
public static void main(String[] args) throws JSONException {
Test testJson = new Test();
Map<String, LinkedList<String>> categoryitemslistMap = new LinkedHashMap<String, LinkedList<String>>();
JSONObject mainObject = new JSONObject();
JSONArray T3Array = new JSONArray();
JSONArray T2Array = new JSONArray();
LinkedList<String> T3ValuesList = new LinkedList<String>();
T3ValuesList.add("Bottled");
T3ValuesList.add("Fountain");
categoryitemslistMap.put("Soft Drinks", T3ValuesList);
String t2consildated_Data = "Lemon,Orange";
for (Map.Entry<String, LinkedList<String>> entry : categoryitemslistMap.entrySet()) {
String t1data = entry.getKey();
if (t1data.equalsIgnoreCase("Soft Drinks")) {
LinkedList<String> t1ChildList = entry.getValue();
for (String t2Data : t1ChildList) {
if (t2consildated_Data != null&& !t2consildated_Data.isEmpty()) {
StringTokenizer stt = new StringTokenizer(t2consildated_Data, ",");
while (stt.hasMoreTokens()) {
String t3data = stt.nextToken();
JSONArray leaf = testJson.createLeaf();
JSONObject lemon = new JSONObject().put("name", t3data).put("leaf", new JSONArray().put(leaf));
T3Array.put(lemon);
}
}
JSONObject bottled = new JSONObject().put("name", t2Data).put("T3", T3Array);
T2Array.put(bottled);
}
JSONObject softDrink = new JSONObject().put("T2", T2Array);
JSONObject json = new JSONObject().put(t1data, softDrink);
mainObject.put("items", json);
} // end of processing values of categoryitemslistMap(Linked List)
} // end of processing categoryitemslistMap
System.out.println(mainObject);
} // end of main method
public JSONArray createLeaf() throws JSONException {
JSONArray ja = new JSONArray();
for(int i=0;i<2;i++)
{
if(i==0)
{
JSONObject jo = new JSONObject();
jo.put("name", "500 ML");
ja.put(jo);
}
else if(i==1)
{
JSONObject jo = new JSONObject();
jo.put("name", "1 Litre");
ja.put(jo);
}
}
return ja;
}
}
您需要在以(
for(String t2Data:t1ChildList){/…
开头的循环中初始化T3Array
。否则,您将向同一数组添加两次相同的对象。您的问题是?非常感谢Robby,这很有效,非常感谢。
{
"items": {
"Soft Drinks": {
"T2": [
{
"name": "Bottled",
"T3": [
{
"name": "Lemon",
"leaf": [
[
{
"name": "500 ML"
},
{
"name": "1 Litre"
}
]
]
},
{
"name": "Orange",
"leaf": [
[
{
"name": "500 ML"
},
{
"name": "1 Litre"
}
]
]
},
{
"name": "Lemon",
"leaf": [
[
{
"name": "500 ML"
},
{
"name": "1 Litre"
}
]
]
},
{
"name": "Orange",
"leaf": [
[
{
"name": "500 ML"
},
{
"name": "1 Litre"
}
]
]
}
]
},
{
"name": "Fountain",
"T3": [
{
"name": "Lemon",
"leaf": [
[
{
"name": "500 ML"
},
{
"name": "1 Litre"
}
]
]
},
{
"name": "Orange",
"leaf": [
[
{
"name": "500 ML"
},
{
"name": "1 Litre"
}
]
]
},
{
"name": "Lemon",
"leaf": [
[
{
"name": "500 ML"
},
{
"name": "1 Litre"
}
]
]
},
{
"name": "Orange",
"leaf": [
[
{
"name": "500 ML"
},
{
"name": "1 Litre"
}
]
]
}
]
}
]
}
}
}