jsonobject接受不了数组吗

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了jsonobject接受不了数组吗相关的知识,希望对你有一定的参考价值。

对,JSONObject不会直接接受数组,它只能接受JSON对象或者JSON字符串来表示数组中的数据。 参考技术A 是的
json第三方解析json字符串时候,json数组必须对应jsonObjectArray,不能对应JsonObject。->只要是[]开头的都是json数组字符串,就要用jsonArray解析

对象必须解析为jsonObject.否则会解析错误。

如何遍历保存到 JSONObject 的数据数组并将其放入 JSONArray?

【中文标题】如何遍历保存到 JSONObject 的数据数组并将其放入 JSONArray?【英文标题】:How to loop over an array of data that saved to a JSONObject and put it in a JSONArray? 【发布时间】:2020-09-16 21:05:14 【问题描述】:

我的 HTML 中有字段,例如我在控制器上循环的 2 行字段。

我希望它得到这样的结果:


"specifications":
[
    
      "name" : "height",
      "value" : "cm"
    ,
    
      "name" : "weight",
      "value" : "kg"
    
  ]

但每次我使用下面的代码循环时,我只会将迭代的最后一行保存到我的 JSONArray 中

JSONObject itemTypeObj = new JSONObject();
JSONArray itemTypeArray = new JSONArray();
JSONObject itemTypeSpecs = new JSONObject();
ArrayList<String> values = new ArrayList();

        for(int x = 0; x < specName.length; x++)

            itemTypeSpecs.put("specName", specName[x]);

            if (specValue[x].contains(",")) 

                for (String v : specValue[x].split(",")) 
                    values.add(v.trim());
                

                itemTypeSpecs.put("specValue", values);
             else 
                itemTypeSpecs.put("specValue", specValue[x]);
            

            values.clear();

            itemTypeArray.put(itemTypeSpecs);

        

itemTypeObj.put("specifications", itemTypeArray);

结果变成了这样,而不是我期望的结果

"specifications":
  [
   
    "name":"Weight",
    "value":"kg"
   ,
   
    "name":"Weight",
    "value":"kg"
   
  ]

我找不到它只获得最后一行的原因。任何帮助表示赞赏。谢谢。

【问题讨论】:

你应该添加你的输入 【参考方案1】:

你应该在第一个“for循环”中创建数组列表和JSONObject。因为你总是改变相同的对象你可以试试这个吗?

        JSONObject itemTypeObj = new JSONObject();
        JSONArray itemTypeArray = new JSONArray();

        for (int x = 0; x < specName.length; x++) 
            List<String> values = new ArrayList();
            JSONObject itemTypeSpecs = new JSONObject();
            itemTypeSpecs.put("specName", specName[x]);

            if (specValue[x].contains(",")) 
                for (String v : specValue[x].split(","))
                    values.add(v.trim());
                itemTypeSpecs.put("specValue", values);
             else 
                itemTypeSpecs.put("specValue", specValue[x]);
            
            itemTypeArray.put(itemTypeSpecs);
        
        itemTypeObj.put("specifications", itemTypeArray);

【讨论】:

我试过这个,它似乎得到了我需要的结果,所以我接受这个作为我问题的答案。太感谢了! :)

以上是关于jsonobject接受不了数组吗的主要内容,如果未能解决你的问题,请参考以下文章

java怎么读取json格式的数据

JSONObject和JSONArray

net.sf.json.JSONObject 和org.json.JSONObject 的差别

JSON解析

JSONSerialization.jsonObject 不接受我的参数

fastjson能将jjson转换为list吗