json 转泛型的集合类

 

package com.boce.test;

 

import java.io.Serializable;

 

public class Man implements Serializable{

 

private String orderId;

 

private String result;

 

private String msg;

//无参数的构造函数是必须的

public Man(){

 

}

 

public Man(String orderId, String result, String msg) {

super();

this.orderId = orderId;

this.result = result;

this.msg = msg;

}

 

public String getOrderId() {

return orderId;

}

 

public void setOrderId(String orderId) {

this.orderId = orderId;

}

 

public String getResult() {

return result;

}

 

public void setResult(String result) {

this.result = result;

}

 

public String getMsg() {

return msg;

}

 

public void setMsg(String msg) {

this.msg = msg;

}

 

 

}

 

 

package com.boce.test;

 

import java.io.IOException;

import java.util.List;

 

import com.fasterxml.jackson.core.JsonParser.Feature;

import com.fasterxml.jackson.databind.DeserializationFeature;

import com.fasterxml.jackson.databind.JavaType;

import com.fasterxml.jackson.databind.ObjectMapper;

 

public class JsonToCollection {

/**

* 字符串转化为集合类型的泛型 如ArrayList<*****> 

* @param data 

* @param collectionClass  ArrayList.class

*  @param  clazz   ***.class

* @return

*/

public Object jsonToListObject(final String data,Class<?> collectionClass, Class<?> ...clazz){

Object obj = null;

try {

// string to Object ObjectMapper类用序列化与反序列化映射器

ObjectMapper mapper = new ObjectMapper();

//获取泛型的Collection Type

JavaType javaType = mapper.getTypeFactory().constructParametricType(collectionClass, clazz); 

// 当反序列化json时,未知属性会引起的反序列化被打断,这里我们禁用未知属性打断反序列化功能,

// 因为,例如json里有10个属性,而我们的bean中只定义了2个属性,其它8个属性将被忽略

mapper.disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES);

// 从json映射到java对象,得到country对象后就可以遍历查找,下面遍历部分内容,能说明问题就可以了

 

mapper.configure(Feature.ALLOW_UNQUOTED_CONTROL_CHARS, true) ;

 

obj = mapper.readValue(data, javaType);

} catch (IOException io) {

io.printStackTrace();

}

 

return obj;

}

 

/**

* 字符串转化为集合类型的泛型 如ArrayList<*****> 

* @param data 

* @param collectionClass  HashMap.class

*  @param  zlass   ***.class

*  @param  clazz   ***.class

* @return

*/

public Object jsonToHashMapObject(final String data,Class<?> collectionClass,Class<?> zlass, Class<?> clazz){

Object obj = null;

try {

// string to Object ObjectMapper类用序列化与反序列化映射器

ObjectMapper mapper = new ObjectMapper();

//获取泛型的Collection Type

JavaType javaType = mapper.getTypeFactory().constructParametricType(collectionClass,zlass,clazz); 

// 当反序列化json时,未知属性会引起的反序列化被打断,这里我们禁用未知属性打断反序列化功能,

// 因为,例如json里有10个属性,而我们的bean中只定义了2个属性,其它8个属性将被忽略

mapper.disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES);

// 从json映射到java对象,得到country对象后就可以遍历查找,下面遍历部分内容,能说明问题就可以了

 

mapper.configure(Feature.ALLOW_UNQUOTED_CONTROL_CHARS, true) ;

 

obj = mapper.readValue(data, javaType);

} catch (IOException io) {

io.printStackTrace();

}

 

return obj;

}

 

public static void main(String[] args) {

 

JsonToCollection json = new JsonToCollection();

String data ="[{\"msg\":\"成功\",\"orderId\":\"17030700918003\",\"result\":\"true\"}]";

 

List<Man> list = (List<Man>)json.jsonToListObject(data, List.class, Man.class);

for(Man it:list){

System.out.println(it.getOrderId() +"--"+it.getResult()+"---"+it.getMsg());

}

 

}

 

}

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值