分享JSON解析小心得
来源:互联网 发布:群晖nas装windows 编辑:程序博客网 时间:2024/06/10 19:43
前言
最近用Retrofit+fastjson进行JSON数据的实体化编程。对碰到的问题做个记录。
附赠工具:
先提供个JSON在线网站:http://www.bejson.com/ 还是挺好用的,够简洁
请先看段JSON
片段一:
{ "animals":{"dog":[{"name":"Rufus","breed":"labrador","count":1,"twoFeet":false},{"name":"Marty","breed":"whippet","count":1,"twoFeet":false}],"cat":{"name":"Matilda"} }, "anim_type":"thpe"}
问题一: 仔细看animals跟anim_type跟dog标签有什么区别?
他们都是key,仅仅是具体的value不一样
问题二:这三个标签的value有什么区别?
朋友们,一般来说,JSON也就这么几个符号,{} [] ""
{}代表的是 类,[]代表的是数组,""代表的字符串
问题三:如果这三个标签混用会怎么用?比如我们将anim标签改成了 "animales":"{[xxxxxxxx]}"
我们暂不管xxxx是什么内容,可以看得出来用""扩上后,自然就变成了字符串。
那么,这里就不再是一个对象,也不会是一个数组,而是一个字符串。
问题四:如何才能保证JSON数据解析的快速正确无误?
1. 服务端必须要有使用工具进行解析,比如JSONFormat,BeJSON,拒绝手动编写,稳定的后端JSON格式输出是关键
2. 使用实体化编程。前后端统一才能彻底解决问题。
问题五:博主你说这些有毛用?
在JSON编写中,乃至整个程序的其他编码过程中,实体化是非常有必要的。(为什么有必要就不讨论了,自己体会)
这里我要说的是 意图
一个良好的编码习惯,最少要能让编写意图 跟 编写结果 保持一致。
这里{}是对象,"{}"就是字符串,当你用"" 去扩 {},那是 将 对象 改变成 字符串。 这显然是编程意图的不明确导致。
表面上看,一点问题都没有,实际上,确确实实的违背了数据格式在设计时的初衷。。。
现在再来看一份以上JSON转换的对象
代码1:
package com.besjon.pojo;public class JsonRootBean { private Animals animals; private String anim_type; public void setAnimals(Animals animals) { this.animals = animals; } public Animals getAnimals() { return animals; } public void setAnim_type(String anim_type) { this.anim_type = anim_type; } public String getAnim_type() { return anim_type; }}
代码2:
package com.besjon.pojo;public class Dog { private String name; private String breed; private int count; private boolean twoFeet; public void setName(String name) { this.name = name; } public String getName() { return name; } public void setBreed(String breed) { this.breed = breed; } public String getBreed() { return breed; } public void setCount(int count) { this.count = count; } public int getCount() { return count; } public void setTwoFeet(boolean twoFeet) { this.twoFeet = twoFeet; } public boolean getTwoFeet() { return twoFeet; }}
代码3:
package com.besjon.pojo;public class Cat { private String name; public void setName(String name) { this.name = name; } public String getName() { return name; }}
代码4:
package com.besjon.pojo;import java.util.List;public class Animals { private List<Dog> dog; private Cat cat; public void setDog(List<Dog> dog) { this.dog = dog; } public List<Dog> getDog() { return dog; } public void setCat(Cat cat) { this.cat = cat; } public Cat getCat() { return cat; }}
最后,看个有趣的东西,谁能告诉我有什么区别?
大家看看这两图。小区别。有大变化。使用fastJSON的解析完全不一样。
阅读全文
0 0
- 分享JSON解析小心得
- 利用jdom解析的一个小心得
- 小心得
- 小心得
- 小心,得!
- 小心得
- 小心得
- 开发oracle+c#程序小心得,与大家分享
- Android 微信分享问题解决小心得(一)
- Android 微信分享问题解决小心得(二)
- freetext一点小心得
- Region小心得.
- 个人小心得
- 杂项小心得
- 生成项目小心得
- java入门小心得
- 小心得(0620)
- monkeyrunner使用小心得
- 用docker搭建全栈式应用 (二)构建篇
- SQL注入
- 中断门,异常门和任务门
- startService 分析--之二
- ACM_最短路模板(SPFA,Dijkstra,Floyd)
- 分享JSON解析小心得
- SQL中的case when then else end用法
- atoi
- 软件开发人员的简历项目经验怎么写?
- iOS 如何优化项目
- 用docker搭建全栈式应用(三)管理篇
- Find Bottom Left Tree Value问题及解法
- 如何快速搭建自己的github.io博客
- 【数据结构】顺序结构实现栈