当前位置: 首页 > 最新文章 > 正文

gson确实比fastjson要好用很多,捞的我淌口水,很烦

之前一直使用的是fastjson,但是对性能上没什么要求,反而对功能的完善性有很高的要求,特别是在java和python的对象转换上有各种莫名的要求,导致掉坑里面去了。我一直以为是我用的不对,使用gson替换实现相同功能后,觉得捞的淌口水。需要认同的是,Gson是目前功能很全的Json解析神器。之前一直使用的是fastjson,但是对性能上没什么要求,反而对功能的完善性有很高的要求,特别是在jav

admin

之前一直使用的是fastjson,但是对性能上没什么要求,反而对功能的完善性有很高的要求,特别是在java和python的对象转换上有各种莫名的要求,导致掉坑里面去了。我一直以为是我用的不对,使用gson替换实现相同功能后,觉得捞的淌口水。需要认同的是,Gson是目前功能很全的Json解析神器。

之前一直使用的是fastjson,但是对性能上没什么要求,反而对功能的完善性有很高的要求,特别是在java和python的对象转换上有各种莫名的要求,导致掉坑里面去了。我一直以为是我用的不对,使用gson替换实现相同功能后,觉得捞的淌口水。需要认同的是,Gson是目前功能很全的Json解析神器。


一波基础知识:

gson

bean转json:

Gson gson = new Gson();String json = gson.toJson(obj);

json转bean:

Gson gson = new Gson();String json = "{\"id\":\"1\",\"name\":\"peabody\"}";Man man= gson.fromJson(json, Man.class);

json转换复杂的bean:

Gson gson = new Gson();String json = "[{\"id\":\"1\",\"name\":\"peabody\"},{\"id\":\"2\",\"name\":\"peapeay\"}]";// 将json转换成ListList list = gson.fromJson(json, new TypeToken<List>() {}.getType());// 将json转换成SetSet set = gson.fromJson(json, new TypeToken<Set>() {}.getType());

Fastjson

bean转json

// 将对象转换成格式化的jsonJSON.toJSONString(obj, true);// 将对象转换成非格式化的jsonJSON.toJSONString(obj, false);

json转bean:

String json = "{\"id\":\"1\",\"name\":\"peabody\"}";Man man = JSON.parseObject(json, Man.class);

json转复杂的bean:

String json = "[{\"id\":\"1\",\"name\":\"peabody\"},{\"id\":\"2\",\"name\":\"peapeay\"}]";// 将json转换成ListList list = JSON.parseObject(json, new TypeReference<ARRAYLIST>(){});// 将json转换成SetSet set = JSON.parseObject(json, new TypeReference<HASHSET>(){});


从上面的使用中,看似差不多,但是我在使用python解析和转换对象和字符串时发现:

"[\"{\\n \\\"status\\\": true, \\n \\\"name\\\": \\\"peabody\\\", \\n \\\"age\\\": \\\"18\\\", \\n \\\"handsome\\\": \\\"YES\\\"\\n}\\n\"]"

只要python转换一次就会多一个反斜杠,比如我这里的这个实体在python中转换使用了三次才回传给java服务端,结果就是一堆的反斜杠。

然后fastjson就各种无法解析,且无法正确有效判断字符串是否为json的格式

最后用gson做了json的格式判断和对象转换

JSONObject testObject = JSONObject.parseObject(testResult);#使用gson进行格式判断if(GsonUtils.isJSON(testObject.toString())){Gson gson=new Gson();java.lang.reflect.Type listType = new TypeToken<List<Man>>() {}.getType();#将格式进行转化为实体类ListString json = gson.toJson(testObject, listType);List<Man> manList= gson.fromJson(json,listType);}

上面的字符串还就那个解析陈昆~为List<Man>


gson确实比fastjson要好用很多,捞的我淌口水,很烦

fastjson用的我淌口水


上一篇: 全新Emit详解|看不见的幕后指挥家——分频器 下一篇:从原理到优化,深入浅出数据库索引
返回顶部