【问题标题】:How to read JSON file of objects into a list in Java with Jackson如何使用 Jackson 将对象的 JSON 文件读入 Java 列表
【发布时间】:2017-05-19 03:40:40
【问题描述】:
 public class Town {    

    private Person p;

    private String hello;
    private long number;
}

public class Person {

    private String firstName;
    private double legs;
    private String lastName;
}

我正在尝试使用以下代码将 Town 类写入 JSON

ObjectMapper mapper = new ObjectMapper();
ObjectWriter writer = mapper.writer(new DefaultPrettyPrinter());
PrintWriter out = new PrintWriter(new BufferedWriter(new FileWriter(file, true)));
 writer.writeValue(out, townobj);

这会产生这样的 Json。

{
  "p" : {
    "firstName" : "John",
    "amount" : 6860.0,
    "lastName" : "Smith"
  },
  "hello" : "qwiejiowcqnio",
  "number" : 1380.0
}

{
  "p" : {
    "firstName" : "Sam",
    "amount" : 623460.0,
    "lastName" : "Smith"
  },
  "hello" : "qwiej2342io",
  "number" : 1330.0
}

如何使用 jackson 将嵌套对象产生的这种输出读取到 Java 中?

【问题讨论】:

  • 所以你知道如何使用mapper.writer()。在查看ObjectMapper 的javadoc 时,相反的操作会使用mapper.reader(),这不是很明显吗?

标签: java json jackson


【解决方案1】:

如果你想将两个对象作为一个列表读入Java,你也需要把它们写成一个列表:

List<Town> towns = new ArrayList<>();
towns.add(townobj);
towns.add(anotherTownobj);

writer.writeValue(out, towns);

当你读回它时,它又变成了一个列表。

您在问题中显示的输出不是有效的单个 json 文件。但是使用上述方法会得到一个有效的单个 json 文件,如下所示:

[
    {
      "p" : {
        "firstName" : "John",
        "amount" : 6860.0,
        "lastName" : "Smith"
      },
      "hello" : "qwiejiowcqnio",
      "number" : 1380.0
    },
    {
      "p" : {
        "firstName" : "Sam",
        "amount" : 623460.0,
        "lastName" : "Smith"
      },
      "hello" : "qwiej2342io",
      "number" : 1330.0
    }
]

【讨论】:

  • 感谢您的回答。如果我有一个像上面这样的现有 JSON 文件,如何将更多对象附加到文件中的数组?
猜你喜欢
  • 2013-04-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-12-01
  • 1970-01-01
  • 2022-09-26
  • 2021-06-07
相关资源
最近更新 更多