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

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

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

  1. [
  2. {
  3. key-value,
  4. key-value
  5. },
  6. {
  7. key-value,
  8. key-value
  9. },
  10. {
  11. key-value,
  12. key-value
  13. }
  14. ]

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

  1. {
  2. "alfa":{
  3. "id":"foo",
  4. "product":{
  5. "id":"foo1",
  6. "price":"foo2"
  7. }
  8. },
  9. "beta":{
  10. "id":"foo",
  11. "product":{
  12. "id":"foo1",
  13. "price":"foo2"
  14. }
  15. }
  16. }

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

  1. public class Alphabet{
  2. private Purchase purchase;
  3. ...
  1. public class Purchase{
  2. private String id;
  3. private Product product;
  4. ...
  1. public class Product {
  2. private String id;
  3. private String price;
  4. ...

阅读:

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

请问怎么了?

2q5ifsrm

2q5ifsrm1#

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

ruarlubt

ruarlubt2#

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

  1. public class Alphabet{
  2. private Purchase purchase;
  3. private Purchase purchase1;
  4. }

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

相关问题