正在使用jackson读取嵌套json-不匹配InputException:无法反序列化值

wj8zmpe1  于 2021-08-20  发布在  Java
关注(0)|答案(2)|浏览(305)

在访问嵌套json时遇到问题。类似的东西:

[
{
 key-value,
 key-value
},
{
 key-value,
 key-value
},
{
 key-value,
 key-value
}
]

效果很好,但当我尝试时:

{
  "alfa":{
      "id":"foo",
      "product":{
          "id":"foo1",
          "price":"foo2"
      }
  },
 "beta":{
      "id":"foo",
      "product":{
          "id":"foo1",
          "price":"foo2"
      }
  }
}

我得到一个错误:
com.fasterxml.jackson.databind.exc.mismatchedinputexception:无法反序列化'java.util.arraylist<。。。
我当然改变了班级结构:

public class Alphabet{
   private Purchase purchase;
...
public class Purchase{
   private String id;
   private Product product;
...
public class Product {
   private String id;
   private String price;
...

阅读:

ObjectMapper mapper = new ObjectMapper();
InputStream inputStream = new FileInputStream(new File("src/main/json/file.json"));
TypeReference<List<Alphabet>> typeReference = new TypeReference<List<Alphabet>>() {};
List<Alphabet> alphabet= mapper.readValue(inputStream, typeReference);
System.out.println(alphabet);

请问怎么了?

2q5ifsrm

2q5ifsrm1#

您尝试读取的json结构似乎不是 List<Alphabet> ,但是 Map<String, Purchase> .

ruarlubt

ruarlubt2#

您的第二个json与对象列表不同。第二个json看起来像有两个主要对象,如果您需要下面这样的类的话。

public class Alphabet{
private Purchase purchase;
private Purchase purchase1;
}

但这不是一个好的做法。用作第一个类似josn的对象列表。

相关问题