项目中经常会用到 json 格式的数据,
在此提炼出公共的 json 与 bean 之间的互转的公共类
以下使用的时 Jackson 的开源包
使用的 Jackson的 jar 包 |
---|
jackson-databind-2.1.1.jar |
jackson-annotation-2.1.1.jar |
jackson-core-2.1.1.jar |
public class JsonUtil{
//bean转json
public static String obj2Json(Object obj){
String jsonStr = "";
ObjectMapper mapper = new ObjectMapper();
try{
jsonStr = mapper.writeValueAsString(obj);
}catch(JsonProcessingException e){
e.printStackTrace();
}
return jsonStr;
}
/**
*json转bean
*@param jsonStr json格式的字符串
*@param className 要转成的bean 的class 类
*/
public static Object json2Obj(String jsonStr,Class<?> className){
Object eb = new Obeject
ObjectMapper mapper = new ObjectMapper();
try{
if(jsonStr == null || jsonStr.isEmpty()){
throw new IllegalArgumentException(className.getName + "转换失败,jsonStr 为空");
}
mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN-PROPERTIES,false);
//此处更改了默认配置,用于忽略json 和bean 字段不一致的情况
eb = mapper.readValue(jsonStr,className);
}catch(JsonParceException e){
e.printStackTrace();
}catch(JsonMappingException e){
e.printStackTrace();
}catch(IOException e){
e.printStackTrace();
}
return eb;
}
public static void main(String[] args){
TestBean bean = new TestBean();
bean.setName("张三"):
System.out.println(obj2Json(bean));
String jsonStr="{\"Name\":\"张三\"}";
TestBean bean = (TestBean)json2Obj(jsonStr,TestBean.class);
System.out.println(bean.getName());
}
}
public class TestBean{
@JsonProperty("Name");
private String name;
//......get/set....
}
注意:
- mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN-PROPERTIES,false);//此处更改了默认配置,用于忽略json 和bean 字段不一致的情况
- @JsonProperty(“Name”);//注解作用是把该属性的名称序列化为另外一个名称,如把trueName属性序列化为name,@JsonProperty(value=“name”)