首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >使用JSONObject在Java中为以下结构创建嵌套的JSON对象?

使用JSONObject在Java中为以下结构创建嵌套的JSON对象?
EN

Stack Overflow用户
提问于 2014-02-26 21:18:38
回答 2查看 94.8K关注 0票数 32

我想使用JSONObject和JSONArray构建一个类似于java中的结构的JSON对象。

我已经看过堆栈溢出中的各种帖子,其中建议使用推送、put等我无法识别的JSONArray方法。请帮帮忙。

代码语言:javascript
复制
{
    "name": "sample",
    "def": [
        {
            "setId": 1,
            "setDef": [
                {
                    "name": "ABC",
                    "type": "STRING"
                },
                {
                    "name": "XYZ",
                    "type": "STRING"
                }
            ]
        },
        {
            "setId": 2,
            "setDef": [
                {
                    "name": "abc",
                    "type": "STRING"
                },
                {
                    "name": "xyz",
                    "type": "STRING"
                }
            ]
        }
    ]
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-02-26 21:31:16

使用导入的org.json.JSONArrayorg.json.JSONObject

代码语言:javascript
复制
JSONObject object = new JSONObject();
object.put("name", "sample");
JSONArray array = new JSONArray();

JSONObject arrayElementOne = new JSONObject();
arrayElementOne.put("setId", 1);
JSONArray arrayElementOneArray = new JSONArray();

JSONObject arrayElementOneArrayElementOne = new JSONObject();
arrayElementOneArrayElementOne.put("name", "ABC");
arrayElementOneArrayElementOne.put("type", "STRING");

JSONObject arrayElementOneArrayElementTwo = new JSONObject();
arrayElementOneArrayElementTwo.put("name", "XYZ");
arrayElementOneArrayElementTwo.put("type", "STRING");

arrayElementOneArray.put(arrayElementOneArrayElementOne);
arrayElementOneArray.put(arrayElementOneArrayElementTwo);

arrayElementOne.put("setDef", arrayElementOneArray);
array.put(arrayElementOne);
object.put("def", array);

为了清楚起见,我没有包含第一个数组的第二个元素。希望你能明白我的意思。

编辑:

之前的答案是假设您使用的是org.json.JSONObjectorg.json.JSONArray

对于net.sf.json.JSONObjectnet.sf.json.JSONArray

代码语言:javascript
复制
JSONObject object = new JSONObject();
object.element("name", "sample");
JSONArray array = new JSONArray();

JSONObject arrayElementOne = new JSONObject();
arrayElementOne.element("setId", 1);
JSONArray arrayElementOneArray = new JSONArray();

JSONObject arrayElementOneArrayElementOne = new JSONObject();
arrayElementOneArrayElementOne.element("name", "ABC");
arrayElementOneArrayElementOne.element("type", "STRING");

JSONObject arrayElementOneArrayElementTwo = new JSONObject();
arrayElementOneArrayElementTwo.element("name", "XYZ");
arrayElementOneArrayElementTwo.element("type", "STRING");

arrayElementOneArray.add(arrayElementOneArrayElementOne);
arrayElementOneArray.add(arrayElementOneArrayElementTwo);

arrayElementOne.element("setDef", arrayElementOneArray);
object.element("def", array);

基本上是一样的,只是在JSONObject中用'put‘代替了'element’,在JSONArray中用'add‘代替了'put’。

票数 66
EN

Stack Overflow用户

发布于 2014-02-26 22:03:08

这里有一个粗略的例子。你应该能够改进。(您可能会对这个Java“教程”http://docs.oracle.com/javaee/7/tutorial/doc/jsonp.htm#GLRBB感兴趣

(本例使用Java中包含的JSON参考实现(可从以下位置获得:https://java.net/projects/jsonp/downloads/directory/ri)

代码语言:javascript
复制
package com.demo;
import java.io.FileWriter;
import java.io.IOException;
import javax.json.Json;
import javax.json.stream.JsonGenerator;

public class JSONExample {
public static void main(String[] args) {
    FileWriter writer = null;
    try {
        writer = new FileWriter("C:\\Users\\Joseph White\\Downloads\\jsontext.txt");
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    JsonGenerator gen = Json.createGenerator(writer);

    gen.writeStartObject().write("name", "sample")
        .writeStartArray("def")
          .writeStartObject().write("setId", 1)
             .writeStartArray("setDef")
                .writeStartObject().write("name", "ABC").write("type", "STRING")
                .writeEnd()
                .writeStartObject().write("name", "XYZ").write("type", "STRING")
                .writeEnd()
            .writeEnd()
          .writeEnd()
            .writeStartObject().write("setId", 2)
              .writeStartArray("setDef")
                .writeStartObject().write("name", "abc").write("type", "STRING")
                .writeEnd()
                .writeStartObject().write("name", "xyz").write("type", "STRING")
                .writeEnd()
              .writeEnd()
            .writeEnd()
          .writeEnd()
        .writeEnd();

    gen.close();

}

 }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22042638

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档