使用JSON.simple创建具有键和值的对象和数组

时间:2015-10-27 10:50:46

标签: java arrays json

我刚刚选择了JSON.simple - 一个简单的JSON Java工具包,它位于https://code.google.com/p/json-simple/。 我需要使用key =>创建Json Arrays;值,只是值字符串的intead。例如,我有以下代码

import org.json.simple.JSONArray;
import org.json.simple.JSONObject;

    public class JsonSimpleExample {
         public static void main(String[] args) {

        JSONObject obj = new JSONObject();
        obj.put("name", "mkyong.com");
        obj.put("age", new Integer(100));

        JSONArray list = new JSONArray();
        list.add("msg 1");
        list.add("msg 2");
        list.add("msg 3");

        obj.put("messages", list);
       }
    }

产生:

{
    "age":100,
    "name":"mkyong.com",
    "messages":[
                 "msg 1",
                 "msg 2",
                 "msg 3"
               ]
}

现在我需要使用key =>创建一个Json对象和数组;值而不仅仅是String作为值。如下所示:

{
    "age":100,
    "name":"mkyong.com",
    "messages":[ 
                { 
                   "msg1" : "1", 
                   "msg2" : "2", 
                   "msg3" : "3" 
                }
               ]
}

请问我该如何实现这一目标?感谢

3 个答案:

答案 0 :(得分:4)

为此,您还需要2个JSONObjects,并且还要为您放入数组的对象提供密钥。实施例;

JSONObject obj = new JSONObject();
    obj.put("name", "mkyong.com");
    obj.put("age", new Integer(100));

    JSONArray list = new JSONArray();
    JSONObject obj2 = new JSONObject();
    JSONObject obj3 = new JSONObject();
    obj3.put("msg 1","1");
    obj3.put("msg 2","2");
    obj3.put("msg 3","3");
    obj2.put("obj3",obj3);
    list.put(obj2);
    obj.put("messages", list);

答案 1 :(得分:3)

只需创建一个新的JsonObject并将其添加到JsonArray而不是String

import org.json.simple.JSONArray;
import org.json.simple.JSONObject;

public class JsonSimpleExample {
     public static void main(String[] args) {

    JSONObject obj = new JSONObject();
    obj.put("name", "mkyong.com");
    obj.put("age", new Integer(100));

    JSONArray list = new JSONArray();
    JSONObject innerObj = new JSONObject();
    innerObj.put("msg1", "1");
    list.add(innerObj);


    obj.put("messages", list);
   }
}

答案 2 :(得分:1)

因此,而不是将字符串放入列表JSONObject中。

JSONObject listobj = new JSONObject();
listobj.put("msg1", "1");

JSONArray list = new JSONArray();
list.add(listobj);