jackson之TypeReference复杂泛型和首字母大写的json转换

项目有个向外部提供api的接口,采用的Oauth协议,部分json字段存在首字母大写的情况!

好吧,还是代码来得直接:

CallBack.java

public class CallBack <T> implements java.io.Serializable{

	private int error;	// 错误号
	private T results;  // 返回的实体信息

	@Override
	public String toString() {
		return "CallBack [error=" + error + ", results=" + results.toString() + "]";
	}
	
	public int getError() {
		return error;
	}
	public void setError(int error) {
		this.error = error;
	}
	public T getResults() {
		return results;
	}
	public void setResults(T results) {
		this.results = results;
	}
}

UserInfo.java

public class UserInfo implements java.io.Serializable{

	@JsonProperty("AppId")
	private String AppId;
	@JsonProperty("AppKey")
	private String AppKey;

	@Override
	public String toString() {
		return "UserInfo [AppId=" + AppId + ", AppKey=" + AppKey + "]";
	}

	public String getAppId() {
		return AppId;
	}
	public void setAppId(String appId) {
		AppId = appId;
	}
	public String getAppKey() {
		return AppKey;
	}
	public void setAppKey(String appKey) {
		AppKey = appKey;
	}
}

@JsonProperty  用来改变某个成员属性

@JsonIgnore     用来忽略某个属性

@JsonIgnoreProperties(ignoreUnknown=true)     忽略掉Pojo中没有配置的属性

Test.java

public class Test {

	public static void main(String[] args) throws Exception {
		ObjectMapper mapper = new ObjectMapper();
		String json = "{\"error\":0, \"results\":{\"AppId\": \"werewrfasdf\", \"AppKey\":\"wqrfdsafdzsjkfhjadh\"}}";
		
		CallBack<UserInfo> call = mapper.readValue(json, new TypeReference<CallBack<UserInfo>>() {});
		
		System.out.println(call.toString());
		System.out.println(call.getResults().toString());
	}
}

TypeReference以用来

简单的介绍到这了,祝各位看官身体健康万事如意!

捐助共勉
版权声明:若无特殊注明,本文皆为原创,转载请保留文章出处。