【问题标题】:Generating a JSON array生成 JSON 数组
【发布时间】:2014-03-29 08:44:17
【问题描述】:

我需要使用 Java 生成如下所示的 JSON 数组对象(“MainData”)。任何人都可以向我建议如何做到这一点?

{
  "MainData":{
    "columnHeaderKeys":null,
    "rowHeaders":[
      {
        "id":0001,
        "name":abcd
      },
      {
        "id":0002,
        "name":xyz
      }
    ],
    "data":[
      {
        "id":0001,
        "rowId":"R1",
        "status":PASSED
      },
      {
        "id":0002,
        "rowId":"R2",
        "status":PASSED
      }
    ]
  }
}

【问题讨论】:

标签: java json arraylist


【解决方案1】:

看看here。您会发现许多对您有帮助的项目。

我会尝试来自 Crockford 的 JSON for Java Github 存储库的 JSONObject.java

简单用法:

JSONObject obj = new JSONObject()
    .put("MainData", new JSONObject()
        .put("columnHeaderKeys", null)
        .put("rowHeaders", new JSONArray()
            .put(new JSONObject()
                .put("id", "001")
                .put("name", "abc")
            )
            .put(new JSONObject()
                .put("id", "002")
                .put("rowId", "R1")
            // ...
        )
    );

输出字符串:

String jsonString = obj.toString();

或直接写入文件:

obj.write(new FileWriter(new File("/path/to/destination/file")));

【讨论】:

  • stackoverflow.com/questions/how-to-answer 我相信您已经知道这一点,但是请查看“为链接提供上下文”段落。否则,它应该是一个有用的评论。
  • 当我写评论时,答案看起来像Take a look here. You will find many projects that will help you. 现在它只是更好。来吧,你在这里够久了。看看@elias 的答案。
  • 我可以成功创建 JSON。感谢大家及时的帮助和支持。
【解决方案2】:

使用Jackson 库。

来自the tutorial的示例代码:

ObjectMapper mapper = new ObjectMapper();

Map<String,Object> userData = new HashMap<String,Object>();
Map<String,String> nameStruct = new HashMap<String,String>();
nameStruct.put("first", "Joe");
nameStruct.put("last", "Sixpack");
userData.put("name", nameStruct);
userData.put("gender", "MALE");
userData.put("verified", Boolean.FALSE);
userData.put("userImage", "Rm9vYmFyIQ==");

mapper.writeValue(new File("user-modified.json"), userData);

【讨论】:

  • 哎呀,忘记映射器!修复它。
【解决方案3】:

使用Google GSON,很简单:

JSONObject result = new JSONObject();
result.put("columnHeadersKeys", JSONObject.NULL);

JSONArray headers = new JSONArray();

JSONObject obj = new JSONObject();
obj.put("id", 1);
obj.put("name", "abcd");
headers.put(obj);

obj = new JSONObject();
obj.put("id", 2);
obj.put("name", "xyz");
headers.put(obj);

result.put("rowHeaders", headers);

JSONArray data = new JSONArray();

obj = new JSONObject();
obj.put("id", 1);
obj.put("rowId", "R1");
obj.put("status", "PASSED");
data.put(obj);

obj = new JSONObject();
obj.put("id", 2);
obj.put("rowId", "R2");
obj.put("status", "PASSED");
data.put(obj);

result.put("data", data);

String output = result.toString();

请注意,对象的整个创建过程可以链接在一个语句中 - 但是我发现将其拆分后更易于阅读。

【讨论】:

    【解决方案4】:

    你可以这样做它对我来说非常适合这条线 Log.i("MainJSON", MainJSON.toString());我已打印创建JSONObject

    try{
            JSONObject jo1=new JSONObject();
            jo1.put("id",001);
            jo1.put("name","abcd");
    
            JSONObject jo2=new JSONObject();
            jo2.put("id",002);
            jo2.put("name","xyz");
    
            JSONArray jarr1=new JSONArray();
            jarr1.put(0, jo1);
            jarr1.put(1, jo2);
    
            JSONObject jo3=new JSONObject();
            jo3.put("id",0001);
            jo3.put("rowId","R1");
            jo3.put("status","PASSED");
    
            JSONObject jo4=new JSONObject();
            jo4.put("id",0002);
            jo4.put("rowId","R2");
            jo4.put("status","PASSED");
    
            JSONArray jarr2=new JSONArray();
            jarr2.put(0, jo3);
            jarr2.put(1, jo4);
    
            JSONObject MainDataObj=new JSONObject();
            MainDataObj.put("rowHeaders", jarr1);
            MainDataObj.put("data", jarr2);
            MainDataObj.put("columnHeaderKeys", "null");
    
            JSONObject MainJSON=new JSONObject();
            MainJSON.put("MainData", MainDataObj);
    
            Log.i("MainJSON", MainJSON.toString());
            }catch (Exception e) {
                // TODO: handle exception
                e.printStackTrace();
            }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-06-15
      • 2021-11-19
      • 2012-02-24
      • 1970-01-01
      • 1970-01-01
      • 2014-07-30
      • 1970-01-01
      相关资源
      最近更新 更多