如何使POJO动态化,使其忽略json标签,但在java中使用jackson读取该标签下的值?

问题描述:

我有一个父DAO:如何使POJO动态化,使其忽略json标签,但在java中使用jackson读取该标签下的值?

@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”标签,而应该足够聪明地阅读没有该标签的其余值。看起来它总是需要在请求上具有param name“nameValueForListValue”。有没有任何注释可以让我的工作更轻松?我正在使用Java 6 & jackson 1.9。

+1

欢迎SO。请在下次使用代码块时为您的问题添加可读性。 –

+0

看看这个问题:http://*.com/q/40686368/13075。我认为这是关于相同的功能。 – Henrik

怎么样使用@JsonAnySetter杰克逊注释

这将是这样的:

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

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

这whay任何未知的领域可以通过此setter来处理。

更多信息:@JsonAnySetter example

@JsonInclude(JsonInclude.Include.NON_NULL)