我正在使用
Spring 3.1.0.RELEASE
Jackson 1.9.5
我正在使用org.springframework.web.client.RestTemplate的getForObject()方法:
getForObject(String url, Class<?> responseType, Map<String, ?> urlVariables) throws RestClientException
这是我的JSON:
{
"someObject": {
"someKey": 42,
},
"key2": "valueA"
}
以下是用于持有它的POJO:
SomeClass.java:
@JsonSerialize(include = JsonSerialize.Inclusion.NON_NULL)
@Generated("org.jsonschema2pojo")
@JsonPropertyOrder({
"someObject",
"key2"
})
public class SomeClass {
@JsonProperty("someObject")
private SomeObject someObject;
@JsonProperty("key2")
private String key2;
@JsonProperty("someObject")
public LocationInfo getSomeObject() {
return someObject;
}
@JsonProperty("someObject")
public void setLocationInfo(SomeObject someObject) {
this.someObject = someObject;
}
}
SomeObject.java:
@JsonSerialize(include = JsonSerialize.Inclusion.NON_NULL)
@Generated("org.jsonschema2pojo")
@JsonPropertyOrder({
"someKey"
})
public class SomeObject{
@JsonProperty("someKey")
private String someKey;
@JsonProperty("someKey")
public String getSomeKey() {
if(someKey==null){
someKey = "";
}
return someKey.toUpperCase();
}
@JsonProperty("someKey")
public void setSomeKey(String someKey) {
this.someKey = someKey;
}
}
有效。给定JSON结构,我得到一个&#34; 42&#34;的字符串值。在类SomeObject的属性someKey
我不明白为什么。在我不知道的幕后会有一些神奇的转变吗?
转换可以依靠吗?此外,我目前没有在String someKey的开头或结尾处获得任何空格。这是我可以依赖的东西,因为整数值不能有任何空格吗?
答案 0 :(得分:1)
如果您想真正了解其工作原理,请查看https://github.com/joelittlejohn/jsonschema2pojo处的代码。
是的,转换可以依靠,是的,你可以指望它们不是pojo中字符串中的空格。
简而言之,读入JSON文件中的字段,然后将这些字段映射到作为responseType
传入的Pojos的成员变量/ setter方法。