如何创建多个JSON数组

时间:2014-01-13 05:11:27

标签: java json

我正在寻找这个来创建JSON,输出是

{     “时代”:100,     “名”:“mkyong.com”     “messages”:[“msg 1”,“msg 2”,“msg 3”] }

但我想要一个像这样的10次数组

{
        "engine": "Trident",
        "browser": "Internet Explorer 4.0",
        "platform": "Win 95+",

    },
    {
        "engine": "Trident",
        "browser": "Internet Explorer 5.0",
        "platform": "Win 95+",

    },
    {
        "engine": "Trident",
        "browser": "Internet Explorer 5.5",
        "platform": "Win 95+",

    },

这就是我尝试的方式

import java.io.FileWriter;
import java.io.IOException;
import org.json.simple.JSONArray;
import org.json.simple.JSONObject;

public class TestJson {
     public static void main(String[] args) {
        JSONObject obj=null;
         obj = new JSONObject();
    for(int i=0;i<10;i++)
    {

    obj.put("engine", "mkyong.com");
    obj.put("browser", i);
obj.put("platform", i);



    //obj.put("messages", list);
    }
    try {

        FileWriter file = new FileWriter("c:\\test.json");
        file.write(obj.toJSONString());
        file.flush();
        file.close();

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

    System.out.print(obj);

     }

}

但这只会打印1张json

{
        "engine": "Trident",
        "browser": "Internet Explorer 4.0",
        "platform": "Win 95+",

    }

2 个答案:

答案 0 :(得分:3)

你可以这样做:

JSONObject jsonObject = new JSONObject();
JSONArray array = new JSONArray();
for(int i=0;i<10;i++){
    JSONObject obj = new JSONObject();
    obj.put("engine", "mkyong.com");
    obj.put("browser", i);
    obj.put("platform", i);

    //if you are using JSON.simple do this
    array.add(obj);

    //and if you use json-jena
    array.put(obj);
}
jsonObject.put("MyArray" , array);

System.out.print(jsonObject);

答案 1 :(得分:0)

在以下代码中

JSONObject obj=null;
obj = new JSONObject();
for(int i=0;i<10;i++)
{

    obj.put("engine", "mkyong.com");
    obj.put("browser", i);
    obj.put("platform", i);

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

您正在创建一个JSONObject并将其值重写10次。

为什么在需要JSON数组时使用JSONObject

创建JSONArray并向其添加10个JSONObject个对象。