Java 如何生成JSON对象,输出将如下所示?

Java 如何生成JSON对象,输出将如下所示?,java,json,Java,Json,我对json非常陌生,如何使json对象的结构(输出字符串)如下所示?我正在使用org.json库 这是一个json数组吗 我的意见如下: 111(root) ----222(child of 111) --------333(child of 222) --------444(child of 222) ----123(child of 111) --------456(child of 123) --------456(child of 123) 我如何制作一个json输出会像吹一样 {

我对json非常陌生,如何使json对象的结构(输出字符串)如下所示?我正在使用org.json库

这是一个json数组吗

我的意见如下:

111(root)
----222(child of 111)
--------333(child of 222)
--------444(child of 222)
----123(child of 111)
--------456(child of 123)
--------456(child of 123)
我如何制作一个json输出会像吹一样

{
"name": "flare",
"children": [
    {
        "name": "analytics",
        "children": [
            {
                "name": "cluster",
                "children": [
                    {
                        "name": "AgglomerativeCluster",
                        "value": 3938
                    },
                    {
                        "name": "CommunityStructure",
                        "value": 3812
                    }
                ]
            },
            {
                "name": "graph",
                "children": [
                    {
                        "name": "BetweennessCentrality",
                        "value": 3534
                    },
                    {
                        "name": "LinkDistance",
                        "value": 5731
                    }
                ]
            }
        ]
    },
    {
        "name": "animate",
        "children": [
            {
                "name": "Easing",
                "value": 17010
            },
            {
                "name": "FunctionSequence",
                "value": 5842
            }
        ]
    }
]
}

谢谢你的帮助

你可以简单地上这样的课

public class Node {
     String name;
     List<Node> children;
     String value;
   }
公共类节点{
字符串名;
列出儿童名单;
字符串值;
}

您可以更改依赖项并使用允许对象映射的库(如Jackson),也可以手动进行映射,如下所示:

private static JSONObject toJSONObject(String name, Object value) {
    JSONObject ret = new JSONObject();
    ret.put("name", name);
    if (value != null) {
        ret.put("value", value);
    }
    return ret;
}

public static JSONObject addChildren(JSONObject parent, JSONObject... children) {
    parent.put("children", Arrays.asList(children));
    return parent;
}

public static void main(String[] sargs) {
    JSONObject flare = toJSONObject("flare", null);
    addChildren(flare,
        addChildren(toJSONObject("analytics", null),
            addChildren(toJSONObject("cluster", null),
                toJSONObject("AgglomerativeCluster", 3938),
                toJSONObject("CommunityStructure", 3812)
            ),
            addChildren(toJSONObject("graph", null),
                toJSONObject("BetweennessCentrality", 3534),
                toJSONObject("LinkDistance", 5731)
            )
        ),
        addChildren(toJSONObject("animate", null),
            toJSONObject("Easing", 17010),
            toJSONObject("FunctionSequence", 5842)
        )
    );
    System.out.println(flare.toString());
}

这可以通过ObjectMapper的漂亮打印实现

public String pretty(Object object) throws JsonProcessingException {
  return OBJECT_MAPPER.writerWithDefaultPrettyPrinter().writeValueAsString(object);
}
你可以用我的图书室

<dependency>
    <artifactId>json-utils</artifactId>
    <groupId>org.bitbucket.swattu</groupId>
    <version>1.0.16</version>
</dependency>

new JsonUtil().pretty(object);

json utils
org.bitbucket.swatu
1.0.16
新的JsonUtil().pretty(对象);

非常感谢,但插入后如何检索值?我需要检查孩子是否已经存在。就像树地图一样。我已经尝试过flare.getJSONObject(“儿童”),这个抛出错误“JSONObject[“儿童”]不是JSONObject。”非常感谢!!!我找到了一种方法,可以使用JSONObject tempObject=tempJSONArray.getJSONObject(I)tempObject.get(“name”).equals(name)检索值;是的,我用jackson lib尝试了这个,它抛出了classnotfound异常。我将jackson-core-2.1.5.jar jackson-databind-2.1.5.jar、jackson-annotations-2.1.5.jar添加到路径中。