我正在使用假装来接听我的电话。不幸的是,我得到的一个回答看起来像这样:
{
"customer-id" : "0123"
}
JSON响应自动映射到我的一个POJO。此响应对象不能具有名称为“customer-id”的属性字段,因为标识符名称中不允许使用短划线( - )。
我尝试了以下内容:
public class LookUpAccountsResponse {
@JsonProperty("customer-id")
private String customerId;
}
但不幸的是,这不起作用。有没有人建议如何解决这个问题?
答案 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将允许您将键和值作为字符串
获取