杰克逊 - 将Json转换为POJO,具有多个条目

7

我知道如果文件 User.json 有

{
  "name" : { "first" : "Joe", "last" : "Sixpack" },
  "gender" : "MALE",
  "verified" : false,
  "userImage" : "Rm9vYmFyIQ=="
}

我可以这样构建一个单独的用户对象:

我可以像这样构造一个单一的用户对象:

User user = mapper.readValue(new File("user.json"), User.class);

但是如果文件User.json里有一个对象数组,我该如何构建对象列表呢?
{
  "name" : { "first" : "Joe", "last" : "Sixpack" },
  "gender" : "MALE",
  "verified" : false,
  "userImage" : "Rm9vYmFyIQ=="
},
{
  "name" : { "first" : "Jane", "last" : "Austen" },
  "gender" : "FEMALE",
  "verified" : false,
  "userImage" : "DFREWEWE=="
}

?

1个回答

11

有多种方法: 如果你有一个这些元素的JSON数组,你可以这样做:

User[] users = mapper.readValue(json, User[].class);

或者,如果它只是一系列根级值的话,您可以执行以下操作:

Iterator<User> it = mapper.readValues(json, User.class);

并迭代值(添加到List或类似结构)


从问题中的代码可以看出,'json'是一个包含JSON文本的File对象。 - Graham Griffiths
正确--我没有指定类型,因为它可以来自多个来源(甚至是JSON byte[]String)。@ImtiazAhmad请查看Jackson javadocs以了解更多可能的类型。 - StaxMan
我面临的问题恰好与此相反。我想创建一个名为user.json的JSON文件,其中包含多个根级别值。但是当我运行mapper.writeValue()方法时,它会覆盖旧值。有人能帮忙吗? - Shashank Garg
@ShashankGarg 是的:ObjectMapper.writer().writeValues(dst) 会给你一个 SequenceWriter,让你可以做你想要的事情。 - StaxMan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接