密钥名称中包含短划线的JSON响应

时间:2017-04-21 07:49:44

标签: java json jackson response netflix-feign

我正在使用假装来接听我的电话。不幸的是,我得到的一个回答看起来像这样:

{
    "customer-id" : "0123"
}

JSON响应自动映射到我的一个POJO。此响应对象不能具有名称为“customer-id”的属性字段,因为标识符名称中不允许使用短划线( - )。

我尝试了以下内容:

public class LookUpAccountsResponse {
        @JsonProperty("customer-id")
        private String customerId;
}

但不幸的是,这不起作用。有没有人建议如何解决这个问题?

3 个答案:

答案 0 :(得分:3)

  

com.google.gson.GsonDecoder

不确定为什么JsonProperty在您的类路径中,但请参阅“字段命名支持”https://github.com/google/gson/blob/master/UserGuide.md#json-field-naming-support

@SerializedName是您想要的Gson注释

或完全切换为使用feign-jackson依赖JacksonDecoder

答案 1 :(得分:1)

工作正常。这是一个最小的例子:

  public static void main(String[] args) throws JsonParseException, JsonMappingException, IOException {
    SomeClass sc = new ObjectMapper().readValue("{\"property-with-dash\": 5}", SomeClass.class);

    System.out.println(sc.propertyWithDash);
  }

  public static class SomeClass {
    @JsonProperty("property-with-dash")
    private int propertyWithDash;
  }

按预期打印5。没有抱怨。

答案 2 :(得分:0)

使用JsonObjects和JsonArrays将允许您将键和值作为字符串

获取