覆盖杰克逊的JSON响应

时间:2014-11-14 16:38:11

标签: java json jackson

我想通过Jackson序列化我的Foo界面:

public interface Foo { }

它有两个实例:标准和调试响应。我只会显示Standard响应,因为它充分传达了我的问题。

public class FooRegular implements Foo {

     private int number;

     public FooRegular(final int number) { this.number = number; }

     @JsonProperty("NUM")
     public getNumber() { 
       return number;
     }  
}

请注意,我在Controller类中返回Foo

public Response sendResponse() {
  Foo foo = getFoo(); // returns FooRegular
  return buildResponse(foo); // returns some Response with `foo` as its body
}

但是,我的回答是:

{ number : 1234 }

我查看了这个answer,这是我尝试过的,但我没有看到预期的结果。

如何覆盖JSON响应以使密钥为NUM而不是number

1 个答案:

答案 0 :(得分:0)

我使用FooRegular尝试了您的ObjectMapper课程,您的JsonProperty注释工作正常。在不知道你的buildResponse方法是什么样的情况下,我只能假设问题就在那里。

您可以尝试使用其中一种资源方法:

public Foo sendResponse() {
    return getFoo();
}

public Response sendResponse() {
    Foo foo = getFoo();
    ObjectMapper mapper = new ObjectMapper();
    String foostr = mapper.writer().writeValueAsString(foo);
    return Response.ok().entity(foostr).build();
}