Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/305.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 生成错误的JSON(每个元素都重复数据)_Java_Json - Fatal编程技术网

Java 生成错误的JSON(每个元素都重复数据)

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

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.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"
                                    }
                                ]
                            ]
                        }
                    ]
                }
            ]
        }
    }
}