-1
我有以下JSON:傑克遜反序列化陣列與空對象
{"beans":["{}",{"name":"Will"}]}
和相應POJO類:
public class BeanA {
private BeanB[] beans;
...getters/setters
}
public class BeanB {
private String name;
...getters/setters
}
我想傑克遜反序列化到BeanA與BeanBs的陣列,所述第一個元素將只是BeanB的一個實例,第二個元素將是具有名稱屬性集的BeanB實例。
我已經序列化此創建的原始字符串:
BeanA beanA = new BeanA();
BeanB beanB = new BeanB();
beanB.setName("Will");
beanA.setBeans(new BeanB[] {new BeanB(), beanB});
這裏是我的objectMapper完整的配置:
this.objectMapper.configure(MapperFeature.DEFAULT_VIEW_INCLUSION, false);
this.objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
this.objectMapper.setSerializationInclusion(JsonInclude.Include.NON_EMPTY);
我得到的錯誤是這樣的:
com.fasterxml.jackson.databind.exc.MismatchedInputException: Cannot construct instance of `BeanB` (although at least one Creator exists): no String-argument constructor/factory method to deserialize from String value ('{}')
'「{}」'或'{}'? –
JSON有一個混合內容的數組,其中第一個元素是一個字符串,第二個元素是一個對象。你的意思是'{「beans」:[{},{「name」:「Will」}]}',沒有'{}'的引號? – Andreas
這裏有什麼問題? 'BeanA beanA = this.objectMapper.readValue(json,BeanA.class)'不工作嗎? –