Я довольно новичок в Джексоне.Я пытаюсь сопоставить следующий json с POJO, используя Джексона для десериализации.
{
"data": [
{
"customerName": "abc",
"varaible_Key1": {
"p1": "text data",
"p2": "textarea data",
........
}
},
{
"customerName": "bbc",
"varaible_Key2": {
"p1": "text",
"p2": "textarea"
......
}
},
{
"customerName": "xyz",
"varaible_Key3": {
"p1": "xyz text",
"p2": "xyz textarea"
......
}
}
///////more customername / variable_keys
]
}
Проблема, с которой я сталкиваюсь, связана с динамическими / переменными ключами в json.
Я пытался использовать@JsonAnySetter в POJO, как показано ниже.
public class Foo {
@JsonProperty("customerName")
private String name;
private Map<String, DataObject> properties;
@JsonAnyGetter
public Map<String, DataObject> getProperties() {
return properties;
}
@JsonAnySetter
public void add(String key, DataObject value) {
properties.put(key, value);
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
, где DataObject содержит поля, такие как p1, p2 и т. Д.
public class DataObject {
@JsonProperty("p1")
private String firstValue;
@JsonProperty("p2")
private String secondValue;
@JsonProperty("p3")
private String thirdValue;
@JsonProperty("p4")
private String fourthValue;
public String getFirstValue() {
return firstValue;
}
public void setFirstValue(String firstValue) {
this.firstValue = firstValue;
}
public String getSecondValue() {
return secondValue;
}
public void setSecondValue(String secondValue) {
this.secondValue = secondValue;
}
public String getThirdValue() {
return thirdValue;
}
public void setThirdValue(String thirdValue) {
this.thirdValue = thirdValue;
}
public String getFourthValue() {
return fourthValue;
}
public void setFourthValue(String fourthValue) {
this.fourthValue = fourthValue;
}
}
Я получаю приведенную ниже ошибку.Любая помощь по этому вопросу приветствуется.
com.fasterxml.jackson.databind.JsonMappingException: N / A (через цепочку ссылок: com.epic.customer.dto.DataField ["data"] ->java.util.ArrayList [0] -> com.epic.customer.dto.Foo ["varaible_Key1"]) в com.fasterxml.jackson.databind.deser.SettableAnyProperty._throwAsIOE (SettableAnyProperty.java:214) в com.fasterxml..jackson..handleUnknownVanilla (BeanDeserializerBase.java:1539) при com.fasterxml.jackson.databind.deser.BeanDeserializer.vanillaDeserialize (BeanDeserializer.java:293) в com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize (BeanDeserializer.java:151) в com.fasterxml.jackson.databind.deser.std.CollectionDeserializer.deserialize (CollectionDeserializer.java:285) в com.fasterxml.jackson.databind.deser.std.CollectionDeserializer.deserialize (CollectionDeserializer.java:244) на com.fasterxml.jackson.databind.deser.std.CollectionDeserializer.deserialize (CollectionDeserializer.java:27) на com.fasterxml.jackson.databind.deser.impl.Java: 151) в com.fasterxml.jackson.databind.ObjectMapper._readMapAndClose (ObjectMapper.java:4001)