Java 如何生成JSON对象,输出将如下所示?
我对json非常陌生,如何使json对象的结构(输出字符串)如下所示?我正在使用org.json库 这是一个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输出会像吹一样 {
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添加到路径中。