我想创建一个像这样的JsonObject:
{
Response: 200,
Lists: [
{
Test: "Math",
Result: "6",
Credit: "3"
},
{
Test: "C++",
Result: "10",
Credit: "6"
}
]
}
我知道用lib org.json创建这个但是和Jackson一起创建吗?我尝试使用
JsonNodeFactory nodeFactory = new JsonNodeFactory();
但我有这个问题
The constructor JsonNodeFactory() is not visible
答案 0 :(得分:10)
请务必使用最新版本的Jackson。他们从codehaus迁移到FasterXML:http://wiki.fasterxml.com/JacksonHome。
您不需要实例化工厂。您可以使用公共静态名称:com.fasterxml.jackson.databind.node.JsonNodeFactory.instance
。
JsonNodeFactory factory = JsonNodeFactory.instance;
ObjectNode root = factory.objectNode();
root.put("Response", 200);
ArrayNode list = factory.arrayNode();
list.add(...);
...
root.set("List", list);
请注意,Jackson是一个很好的库,可以将Java POJO映射到JSON(以及后面)。您可以创建Jackson将序列化为JSON的Java类,而不是手动创建JSON结构:
public class Item {
@JsonProperty("Test")
private String test;
@JsonProperty("Result")
private String result;
@JsonProperty("Credit")
private String credit;
}
public class Root {
@JsonProperty("Response")
private int response;
@JsonProperty("List")
private List<Item> list;
}
public static void main(String[] args) {
Root root = new Root();
...
String json = new ObjectMapper().writeValueAsString(root)
}
答案 1 :(得分:1)
要创建JsonNode对象,请使用ObjectMapper。例如:
ObjectMapper mapper = new ObjectMapper();
JsonNode node = mapper.readValue(JSON_STRING, JsonNode.class)
有关信息,请参阅the Jackson documentation。