Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/389.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/188.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_Android_Json_Listview_Arraylist - Fatal编程技术网

Java 将平面json解析为带有类别的数组

Java 将平面json解析为带有类别的数组,java,android,json,listview,arraylist,Java,Android,Json,Listview,Arraylist,我需要动态解析这个平面JSON: [{"titulo":"prueba1","nombrelinea":"cortecaballero","monto":"12"}, {"titulo":"prueba1","nombrelinea":"cortedama","monto":"15"}, {"titulo":"prueba1","nombrelinea":"corteniño","monto":"10"}, {"titulo":"prueba2","nombrel

我需要动态解析这个平面JSON:

    [{"titulo":"prueba1","nombrelinea":"cortecaballero","monto":"12"},
    {"titulo":"prueba1","nombrelinea":"cortedama","monto":"15"},
    {"titulo":"prueba1","nombrelinea":"corteniño","monto":"10"},
    {"titulo":"prueba2","nombrelinea":"tintecaballero","monto":"12"},
    {"titulo":"prueba2","nombrelinea":"tintedama","monto":"15"},
    {"titulo":"prueba2","nombrelinea":"tinteniño","monto":"10"},
    {"titulo":"prueba3","nombrelinea":"secadocaballero","monto":"12"},
    {"titulo":"prueba3","nombrelinea":"secadodama","monto":"15"},
    {"titulo":"prueba3","nombrelinea":"secadoniño","monto":"10"}]
通过以下方式将其插入阵列:

 ArrayList<Item> items = new ArrayList<Item>();
     items.add(new SectionItem("prueba 1"));
     items.add(new EntryItem("cortecaballero", "12"));
     items.add(new EntryItem("cortedama", "15"));
     items.add(new EntryItem("corteniño", "12"));
     items.add(new SectionItem("prueba 2"));
     items.add(new EntryItem("tintecaballero", "12"));
     items.add(new EntryItem("tintedama", "15"));
     items.add(new EntryItem("tinteniño", "12"));
     items.add(new SectionItem("prueba 3"));
     items.add(new EntryItem("secadocaballero", "12"));
     items.add(new EntryItem("secadodama", "15"));
     items.add(new EntryItem("secadoniño", "12"));
ArrayList items=new ArrayList();
项目。添加(新章节项目(“prueba 1”);
添加(新条目(“cortecaballero”、“12”);
添加(新条目(“cortedama”、“15”);
添加(新条目(“corteniño”、“12”);
增加(新的章节项目(“普鲁巴2”);
添加(新条目(“tintecaballero”、“12”);
添加(新条目(“tintedama”、“15”);
增加(新条目(“tinteniño”、“12”);
项目。增加(新的章节项目(“prueba 3”);
增加(新条目(“secadocaballero”、“12”);
增加(新条目(“secadodama”、“15”);
增加(新条目(“secadoniño”、“12”);

我已经试过了,但每一行都会重复“titulo”。

好吧,最好更改
JSON
的格式,但如果您没有机会这样做,并且如果响应结构始终与上面相同,那么可能的解决方案是执行以下操作(假设
out
JSON
类型
String
的响应):

ArrayList items=new ArrayList();
JSONArray JSONArray=新JSONArray(输出);
JSONObject JSONObject=新的JSONObject();
Set tempSet=newhashset();

对于(int i=0;我感谢你的快速回答!我忘了说:JSON是数据库中的字符串,大小可以不同。我告诉你这一点是因为你的答案是固定大小的JSON。再次感谢!我测试了你的解决方案,但只在JSON是静态的情况下有效,但对象的数量会有所不同。你能帮我找到一个动态解决方案吗?@e利格特,你能再举一个json的例子吗?好的,这是另一个例子![{“提托洛”:“普鲁巴1”,“诺姆布雷纳”:“科尔蒂卡巴莱罗”,“蒙托”:“12”},{“提托洛”:“普鲁巴1”,“诺姆布雷纳”:“科尔蒂卡巴莱罗”,“蒙托”:“10”},{“提托洛”:“普鲁“12”{“titulo”:“prueba2”,“nombrelinea”:“tintedama”,“monto”:“15”},{“titulo”:“prueba3”,“nombrelinea”:“tinteniño”,“monto”:“10”},{“titulo”:“prueba3”,“nombrelinea”:“secadocaballero”,“monto”:“12”{“titulo”:“prueba4”,“nombrelinea”:“secadoma”,“secadodama”,“monto”:“15”]数据,它可以变化。
ArrayList<Item> items = new ArrayList<Item>();
JSONArray jsonArray = new JSONArray(out);
JSONObject jsonObject = new JSONObject();
Set<String> tempSet = new HashSet<String>();
for (int i = 0; i<jsonArray.length();i++){
    jsonObject = jsonArray.getJSONObject(i);
    if (!tempSet.contains(jsonObject.getString("titulo"))){
        items.add(new SectionItem(jsonObject.getString("titulo")));
        tempSet.add(jsonObject.getString("titulo"));
    }
    items.add(new EntryItem(jsonObject.getString("nombrelinea"), jsonObject.getString("monto")));
}