简体   繁体   中英

reading nested json with jackson - MismatchedInputException: Cannot deserialize value

stucked at accessing nested json. similar stuff:

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

works nicely but when i try:

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

i get error:

com.fasterxml.jackson.databind.exc.MismatchedInputException: Cannot deserialize value of type `java.util.ArrayList<...

i of course did change structure of classes:

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

to read it:

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);

whats wrong, please?

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

Your second json not like list of object. The second json look lik have 2 main objects if so you need class like below.

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

But it not good practice. Use as first josn like list of objects.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM