java - Jackson 如何创建 JsonObject

标签 java json jackson

我想创建一个像这样的 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)静态实例: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)
}

关于java - Jackson 如何创建 JsonObject,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25095791/

相关文章:

java - pom 中 runOnlyAtExecutionRoot 的用法

java - 如何在 ResponseEntity 中不返回空值?

php - 使用 PHP 创建基于已解码的 JSON 的文件夹/文件结构

json - 在 Swift 中从 JSON 文件中获取值

java - Spring 3.1.1 web MVC - 限制对接口(interface) getter 的响应

java - 优化对象列表的fasterxml ObjectMapper

java - Swagger-ui - 列表参数编码

java - ArrayList 和单向链表一样吗?

javascript - 为什么我的 json 数据没有使用 javascript 按正确的顺序加载?

java - Jackson反序列化: Custom Object factory