簡體   English   中英

傑克遜如何創建一個JsonObject

[英]How Jackson-Creating a JsonObject

我想創建一個像這樣的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

請務必使用最新版本的Jackson。 他們從codehaus遷移到FasterXML: http ://wiki.fasterxml.com/JacksonHome。

您不需要實例化工廠。 您可以使用public static one: 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)
}

要創建JsonNode對象,請使用ObjectMapper。 例如:

ObjectMapper mapper = new ObjectMapper();
JsonNode node = mapper.readValue(JSON_STRING, JsonNode.class)

有關信息,請參閱Jackson文檔

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM