杰克逊:回过头来回应的一部分

时间:2014-07-11 15:24:44

标签: java json jackson

目前服务响应如下所示:

{
    "values": [
        {
            "field1": "value",
            .................

        },
        {
            "field1": "value",
            .................

        }
   ]
   metadata1:[],
   metadata2:"-"
}

但只想发送值数组作为响应。喜欢这个

[
 {
   "field1": "value",
    .................   
 },
 {
   "field1": "value",
   ................
 }
]

我可以在@JsonIgnoreProperties的帮助下禁止元数据信息。但是回复仍然是这样的:

{
        "values": [
            {
                "field1": "value",
                .................

            },
            {
                "field1": "value",
                .................

            }
       ]
    }

我该如何解决?

1 个答案:

答案 0 :(得分:1)

使用the @JsonValue annotation很容易实现,它可以改变java类的表示形式。只需将一个使用此批注注释的方法添加到返回值集合的响应类中。这是一个例子:

public class JacksonValue {
    public static class Bean {
        private final List<String> values;

        public Bean(List<String> values) {
            this.values = values;
        }

        @JsonValue
        public List<String> getValues() {
            return values;
        }
    }

    public static void main(String[] args) throws JsonProcessingException {
        Bean bean = new Bean(Arrays.asList("a", "b", "c"));

        ObjectMapper mapper = new ObjectMapper();
        System.out.println(mapper.writeValueAsString(bean));
    }
}

输出:

["a","b","c"]