在JAVA中向JSONObject添加JSON数组时,值没有引号的问题

5

我正尝试使用以下代码将一个JSONArray添加到JSONObject中:

   defObj.put("locArr",(Object)locArr);

但是这将导致以下JSON格式:
   ["locArr":"[{"longitude":35,"latitude":39,"ip":"81.212.204.150"},
               {"longitude":-122.1781,"latitude":37.459,"ip":"173.252.110.27"}]"]

我正在按照以下方式初始化和填充locArr:

我正在按照以下方式初始化和填充locArr:

   JSONObject locObj = new JSONObject();
   JSONArray locArr = new JSONArray();
   locObj.put("ip", ip);
   locObj.put("latitude", latitude);
   locObj.put("longitude", longitude);
       locArr.put(locObj)

正如您所看到的,JSONArray的值被双引号括起来了。因此,当我尝试解析这个JSON时,我面临着意外字符错误,因为有引号。

我希望输出如下:

   ["locArr":[{"longitude":35,"latitude":39,"ip":"81.212.204.150"},
               {"longitude":-122.1781,"latitude":37.459,"ip":"173.252.110.27"}]]

请问如何在不使用双引号的情况下添加JSONArray的值?


你能展示一下如何初始化和填充locArr吗? - Andrew Shepherd
你在哪里尝试解析JSON?在javascript中吗? - Pramod S. Nikam
@pramod.nikam.dev 我正在尝试在JAVA中解析它。 - Srikanth Kandalam
你想分享一下你希望输出的样子吗?你是指要从“locArr”中删除引号吗? - Ayman
@Ayman,请查看输出格式。我已更新问题。 - Srikanth Kandalam
显示剩余2条评论
2个回答

4
我认为你需要一个封闭的JSON数组:
JSONObject locObj = new JSONObject();
locObj.put("ip", ip);
locObj.put("latitude", latitude);
locObj.put("longitude", longitude);

// Inner array
JSONArray locArr = new JSONArray(); 
locArr.put("locArr", locObj);

// Parent array
JSONArray parentArr = new JSONArray();
parentArray.put(locArr);

1
尝试移除对象转换:
defObj.put("locArr", locArr);

希望这可以帮到您。

我已经尝试过这个,结果是这个格式: "locArr":["[{"longitude":35,"latitude":39,"ip":"81.212.204.150"},{"longitude":35,"latitude":39,"ip":"212.156.101.117"}]"] - Srikanth Kandalam
请分享整个方法体,以便我可以在本地运行并回复。 - Ayman

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接