简体   繁体   English

JAVA JSONObject在数组(JSONArray)中添加新元素

[英]JAVA JSONObject adding a new element in Arrays (JSONArray)

I need add an element into JSONArray, but the method “append” creates multiples arrays instead add one element. 我需要在JSONArray中添加一个元素,但是方法“ append”会创建多个数组,而不是添加一个元素。

What would be the simplest way ? 最简单的方法是什么?

I created the following sample code with JUnit just for isolate my issue. 我使用JUnit创建了以下示例代码,目的只是为了解决我的问题。

import org.codehaus.jettison.json.JSONArray;
import org.codehaus.jettison.json.JSONException;
import org.codehaus.jettison.json.JSONObject;
import org.junit.Before;
import org.junit.Test;

public class JettisonJSONOperations {

   JSONObject jsonObject = new JSONObject();

   @Before
   public void preCreateJsonObject (){

       try {

           jsonObject.put("groupName","administrators");

           JSONArray members = new JSONArray();
           members.put("edward");
           members.put("richard");
           members.put("john");

           jsonObject.put("members", members);

       } catch (JSONException e) {
           e.printStackTrace();
       }

       System.out.println(jsonObject.toString());
   }

   @Test
   public void addingElementToJSONArray (){

       try {

           jsonObject.append("members", "batman");

       } catch (JSONException e) {
           e.printStackTrace();
       }

       System.out.println(jsonObject.toString());
   }
}

Output: 输出:

{"groupName":"administrators","members":["edward","richard","john"]}
{"groupName":"administrators","members":[["edward","richard","john"],"batman"]}

Process finished with exit code 0

After reading a lot of comments about jettison issues, I decided to change Jettison JSONObject library to org.json. 在阅读了很多关于抛弃问题的评论之后,我决定将Jettison JSONObject库更改为org.json。

From: 从:

   <dependency>
        <groupId>org.codehaus.jettison</groupId>
        <artifactId>jettison</artifactId>
        <version>1.3.4</version>
    </dependency>

To: 至:

    <dependency>
        <groupId>org.json</groupId>
        <artifactId>json</artifactId>
        <version>20131018</version>
    </dependency>

And good news it works perfectly :) 好消息它完美地起作用:)

import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import org.junit.Before;
import org.junit.Test;

public class ORGJSONOperations {

    JSONObject jsonObject = new JSONObject();

    @Before
    public void preCreateJsonObject (){

        try {

            jsonObject.put("groupName","administrators");

            JSONArray members = new JSONArray();
            members.put("edward");
            members.put("richard");
            members.put("john");

            jsonObject.put("members", members);

        } catch (JSONException e) {
            e.printStackTrace();
        }

        System.out.println(jsonObject.toString());
    }

    @Test
    public void addingElementToJSONArray (){

        try {

            jsonObject.append("members", "batman");

        } catch (JSONException e) {
            e.printStackTrace();
        }

        System.out.println(jsonObject.toString());
    }
}

Output: 输出:

{"groupName":"administrators","members":["edward","richard","john"]}
{"groupName":"administrators","members":["edward","richard","john","batman"]}

Process finished with exit code 0

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM