0. 这次灵感并不是来自大佬的博客,就是突发奇想。
Google的Gson最早是我一直优先考虑,直到公司使用了FastJSON,我才怀念昔日Gson的快乐…
Jackson Spring自带的,许多国外的优秀开源框架也集成了它,后面有空的话,再补上了。
FastJSON alibaba的好家伙,我的评价是—— 听说执行效率可观,但是学习成本也不赖
1. 就从最近在用的FastJSON说起吧
用的多的类无非:JSONObject、JSONArray、JSON
JSONObject构造支持传入一个boolean
false,默认=> HashMap
true => LinkedListMap
JSONArray
List
建议将转换的类标记Serieliable,以防有时候会出问题
在不同地方作json串&json对象转换的时候,务必注意传递之前的样子
比如说缓存到redis,直接存入对象,取出的字符串时候再通过fastjson转成Java对象,此时需要考虑转换的json串带不带转义符
存入的时候如果直接存Java对象,那么可能被调用了toString(),导致出现转义符
建议
obj=>str:JSONObject(JSONArray).toJSONString(obj)
str=>obj:JSONObject(JSONArray).paseObject(parseArray)(JSON.toJSON(str).toString())
报错一般是:fastjson xxx异常,报错内容中还带 ‘{’ ‘}’之类的
如果考虑数据在不同脚本端的完整性(比如前后端使用json传输数据),此时需要考虑fastjson转换策略
默认,null值字段会被直接干掉,看起来像是最简的表达
JSONObject.toJSONString(json, SerializerFeature.WriteMapNullValue)
还有一个坑,有些json类库会命名类JsonObject,百度的坑