使用fastjson解析技巧
来源:互联网 发布:淘宝联盟微信打不开 编辑:程序博客网 时间:2024/05/16 08:20
场景:
最近因为公司的一个业务在不同环境下不同的展示,PC端和移动端,两种不同的展示效果导致了在一段JSON字符串中存储了不同结构的不同键,简单说就是
{ "key1":{ "key2":{ "value1":1, "value2":1 }, "value1":1, "value2":1 }, "key2":{ "value1":1, "value2":1 }}
由于PC端对两个键值的关系分别展示,展示不同的效果,但是在移动端需要兼容两个键的值,即把两个键中的值合并到同一个字段中展示。
问题来了,怎么通过JSON解析把key1中的key2和正常的key2合并
两个key2是相同的类
测试了一下fastjson解析是通过反射进行解析的,它不关心反射的类是不是你存进去对应的class。只关心能不能找到相同的键
所以我定义了两个属性,分别是key1和key2,key1是一个JSONObject,而key2是一个对应的实体类
在setKey1()方法的时候把需要实现的逻辑代码放进去就可以了
public void setNameLabel(List<NameLabelDto> nameLabel) { for (int i = 0; i < nameLabel.size(); i++) { NameLabelDto dto = nameLabel.get(i); if (!this.nameLabel.contains(dto) && dto.getId() > 0) { this.nameLabel.add(dto); } } }public void setFaceList(List<JSONObject> faceList) { for (int i = 0; i < faceList.size(); i++) { JSONObject json = faceList.get(i); NameLabelDto dto = new NameLabelDto(); dto = JSONObject.parseObject(json.getString("member"), NameLabelDto.class); if (!this.nameLabel.contains(dto) && dto.getId() > 0) { this.nameLabel.add(dto); } } }
把这个代码贴上去
大致意思就是在set方法的时候把获取到的值放入到已存在的list中
因为不知道哪一个字段先解析,所以就会有个问题,如果后解析的字段中那个值为空就会把原来的值进行覆盖,所以进行判断之后进行去重添加就不会有问题了。
阅读全文
1 0
- 使用fastjson解析技巧
- fastjson使用技巧整理
- android 使用fastjson解析
- FastJSON使用技巧两则
- json解析:[2]fastjson 使用
- json解析:[2]fastjson 使用
- 使用FastJson解析Json数据
- 使用FastJson解析Json数据
- 使用FastJson解析Json数据
- 使用fastjson解析json数据
- 使用FastJson解析Json数据
- 使用FastJson解析Json数据
- FastJson解析简单的使用
- 使用FastJson解析Json数据
- JAVA-使用FastJson解析复杂JSON数据
- 使用fastJSON解析HashMap中的数据
- json解析库gson和fastjson使用
- 使用okHttp发起请求并用fastJson解析
- 欢迎使用CSDN-markdown编辑器
- ccf炉石传说
- OLEDB的Excel的IMEX和HDR是什么意思
- Software Testing
- Java静态代码块、构造代码块、构造方法的执行顺序
- 使用fastjson解析技巧
- 提高Web端页面加载速度的6个方法
- Java Filter过滤机制详解
- 暑期集训之0和5
- 一个高级java工程师需要具备什么能力和技术
- Android_不同行为的Fragement的生命周期的变化
- 丑数 (using priority_queue) UVA
- my.cnf推荐配置
- 看了这部剧就是科技圈大赢家_别落伍!