2016-11-22 7 views
0

Я родительский DAO:Как сделать POJO динамическим, чтобы он игнорировал тег json, но читал значение под этим тегом, используя jackson в java?

@XmlRootElement//(name="metadata") 
    public class FolderAttributes { 
    private Map nameValueForListValue; 

Детский DAO:

@XmlAccessorType(XmlAccessType.FIELD) 
    public class ListWrapper { 
    @XmlElementWrapper(name = "attrValue") 
    private List<Object> list; 

запрос JSON, который работает (если я использую имя "метаданных" в качестве корневого элемента):

"metadata": { 
    "nameValueForListValue": { 
     "signed": { 
     "attrValue": [ 
      "ahsdfhgakjf" 
     ] 
     }, 
"id": { 
     "attrValue": [ 
      "12345678", 
      "87654321" 
     ] 
     }, 
.......... continues 

Я не хочу, чтобы тег «nameValueForListValue» в запросе, вместо этого он должен быть достаточно умным, чтобы читать остальную часть значений без этого тега. Похоже, что всегда нужно иметь имя параметра «nameValueForListValue» в запросе. Есть ли аннотации, которые облегчат мою работу? Я использую Java 6 & jackson 1.9.

+1

Добро пожаловать на SO. В следующий раз используйте блоки кода, чтобы добавить читаемость к вашему вопросу. –

+0

Взгляните на этот вопрос: http://stackoverflow.com/q/40686368/13075. Я думаю, что это касается той же функции. – Henrik

ответ

0

Что об использовании @JsonAnySetter Jackson аннотацию

Было бы что-то вроде:

@XmlRootElement//(name="metadata") 
public class FolderAttributes { 
    private Map nameValueForListValue; 

    @JsonAnySetter 
    public void genericSetter(String key, Object value){ 
     nameValueForListValue.put(key, value); 
    } 
} 

Это whay любое неизвестное поле можно обрабатывать этим сеттера.

Подробнее: @JsonAnySetter example