package sior.util;
import sior.bo;
import com.fasterxml.jackson.annotation.JsonInclude.Include;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.DeserializationFeature;
import com.fasterxml.jackson.databind.ObjectMapper;
public class JackSonUtil {
/**
* Json字符串转对象
*
* @param <T>
* @param jsonStr
* @param clazz
* @return
* @throws Exception
*/
public static <T> T jsonStrToBean(String jsonStr, Class<T> clazz)
throws Exception {
ObjectMapper mapper = new ObjectMapper();
// mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES,false);
return mapper.readValue(jsonStr, clazz);
}
/**
* 对象转Json字符串
* @param bean
* @return
* @throws Exception
*/
public static String beanToJsonStr(Object bean) throws Exception {
ObjectMapper mapper = new ObjectMapper();
return mapper.writeValueAsString(bean);
}
public static String beanToJsonNoNull(Object bean)
throws JsonProcessingException {
ObjectMapper mapper = new ObjectMapper();
mapper.setSerializationInclusion(Include.NON_NULL); // 属性为NULL不序列化
return mapper.writeValueAsString(bean);
}
}
//调用方法,将json字符串转换成bean对象
public static void main(String[] args) {
//比较复杂的json不适合用gson解析,可能会出问题;
//bean对象根据json字符串声明,{}用bean对象声明,[]用list<bean>声明 ;
//声明bean对象时,set方法上边要加上@JsonProperty("xx"),xx表示:"TS"、"ZTS"、"DYSJ"、"Field"、"Data"json字符串中的key值;
//并且json字符串中有汉语:"身份证号码":"110105195312192511",使用@JsonProperty("身份证号码")
//jsonStr 字符串没有加转译符号"\",自己加吧!
String searchResult = "{
"TS":[
{"ZTS":"1","DYSJ":"2018-12-18 11:36:25"}],
"Field":[
{"fieldCname":"姓名","fieldEname":"姓名"},
{"fieldCname":"身份证号码","fieldEname":"身份证号码"},
{"fieldCname":"性别","fieldEname":"性别"},
{"fieldCname":"民族","fieldEname":"民族"},
{"fieldCname":"籍贯","fieldEname":"籍贯"},
{"fieldCname":"出生地","fieldEname":"出生地"},
{"fieldCname":"出生日期","fieldEname":"出生日期"},
{"fieldCname":"户籍地址","fieldEname":"户籍地址"},
{"fieldCname":"户号","fieldEname":"户号"},
{"fieldCname":"与户主关系","fieldEname":"与户主关系"},
{"fieldCname":"户口类别","fieldEname":"户口类别"},
{"fieldCname":"集体户类别","fieldEname":"集体户类别"},
{"fieldCname":"进京日期","fieldEname":"进京日期"},
{"fieldCname":"户籍录入时间","fieldEname":"户籍录入时间"}],
"Data":[
{"姓名":"何瑞喜",
"身份证号码":"110105195312192511",
"性别":"男",
"民族":"汉族",
"籍贯":"北京市",
"出生地":"北京市",
"出生日期":"1953-12-19",
"户籍地址":"北京市东城区",
"户号":"7541382",
"与户主关系":"户主(男)",
"户口类别":"非农业家庭户",
"集体户类别":"",
"进京日期":"",
"户籍录入时间":"2004-12-16 00:00:00"}]
}";
logger.info("登记信息查询接口反馈内容:"+searchResult);
DataPersonnelRegistration jsonStrToBean = JackSonUtil.jsonStrToBean(searchResult, DataPersonnelRegistration.class);
DataPersonnelInfo dataPersonnelInfo = jsonStrToBean.getData().get(0);
String personnelIdCard = dataPersonnelInfo.getIdCard();
//json字符串复杂时,这两种方法解析时会报错。不建议使用
//Map<String, String> map = new Gson().fromJson(personMap, new TypeToken<Map<String, String>>(){}.getType());
//DataPersonnelRegistration jsonStrToBean = new Gson().fromJson(personMap, DataPersonnelRegistration.class);
}
评论1
最新资源