Jackson的使用
对象和json之间的转换:
对象转JSON
ObjectMapper
objectMapping
= new ObjectMapper();
objectMapping.writeValueAsString(obj)
JSON转对象
ObjectMapper
objectMapping
= new ObjectMapper();
objectMapping.readValue(str, ojb.class)
说明
- json字符串中的key应该与java对象的属性名相同
- java对象中属性如果为private,则需要显示生成getter/setter方法;如果属性为public,则可以不必写getter/setter方法
- java对象如果有自定义的构造方法,json字符串转换为java对象时会出错
- 如果json字符串中的属性个数小于java对象中的属性个数,可以顺利转换,java中多的那个属性为null
- 如果json字符串中出现java对象中没有的属性,则在将json转换为java对象时会报错:Unrecognized field, not marked as ignorable
解决方法:在目标对象的类级别上添加注解:
@JsonIgnoreProperties(ignoreUnknown = true)
;- java对象名和json中名不一致时解决方法:
在目标对象的字段级别上添加注解:
@JsonProperty(value = "name")
其他用法看: https://www.cnblogs.com/guanbin-529/p/11488869.html https://www.cnblogs.com/justn0w/p/11181274.html
FastJson的使用(尽量使用较高的版本,低版本bug较多)
1,Fastjson中的经常调用的方法:
public static final Object parse(String text); // 把JSON文本parse为JSONObject或者JSONArray public static final JSONObject parseObject(String text); // 把JSON文本parse成JSONObject public static final T parseObject(String text, Class clazz); // 把JSON文本parse为JavaBean public static final JSONArray parseArray(String text); // 把JSON文本parse成JSONArray public static final List parseArray(String text, Class clazz); //把JSON文本parse成JavaBean集合 public static final String toJSONString(Object object); // 将JavaBean序列化为JSON文本 public static final String toJSONString(Object object, boolean prettyFormat); // 将JavaBean序列化为带格式的JSON文本 public static final Object toJSON(Object javaObject); //将JavaBean转换为JSONObject或者JSONArray。
2,Fastjson字符串转List<Map<String,Object>>(), 或者List<String>()的用法;
List<Map<String, Object>> list = JSONObject.parseObject(respJson, new TypeReference<List<Map<String, Object>>>() {});
3,Fastjson的SerializerFeature序列化属性
QuoteFieldNames———-输出key时是否使用双引号,默认为true
WriteMapNullValue——–是否输出值为null的字段,默认为false
WriteNullNumberAsZero—-数值字段如果为null,输出为0,而非null
WriteNullListAsEmpty—–List字段如果为null,输出为[],而非null
WriteNullStringAsEmpty—字符类型字段如果为null,输出为”“,而非null
WriteNullBooleanAsFalse–Boolean字段如果为null,输出为false,而非null例如:JSON.toJSONString(resultMap, SerializerFeature.WriteMapNullValue);