日常小结-关于模拟登陆的小结-fastjson库的使用小结
来源:互联网 发布:js 移除class中的一个 编辑:程序博客网 时间:2024/05/21 10:17
上节说道okhttp库,它主要负责的是http协议部分,通过http得到的数据有很多种,常用的有html之类的网页、此外就是json比较多,据说还有xml,但是目前我还没有用过,当然还有很多其他格式不再赘述。
json解析和常用json库
因为我是为了做抓包,主要就是分析内容,通常来说,html网页主要的内容都是通过正则表达式来实现的。java自带的正则表达式就足够了。但是如果是json就没办法用java原生的api来做(虽然也能做但是太麻烦),通常来说json都有专门的json的库来解析。json库用起来都差不多,目前我听说的比较多的有这几类:
- gson :谷歌开发的json库。最大的好出是功能比较全,采用了反射的方式,速度稍慢一些。适合小数据量复杂类型。
- fastjson:阿里做的json库。目前最快的库,但是对于复杂类型会有一些问题。适合大量的数据解析。比较适合用于字符串和json相互转换
- Json-lib:一个比较易用的库。比较擅长javabean、集合构造数据与json之间的转换,转后的不是标准json
json库和性能的比较
fastjson的使用
本着支持国产的原则先用了fastjson,后来才发现居然没有api文档。好在官方给出了例子,而且json解析本就是很简单的事情。通常来说就两个函数来回用就行了。
fastjson的例子
// 编码String jsonString = JSON.toJSONString(group);//解码Group group = JSON.parseObject(jsonString, Group.class);
首先需要根据json的格式创建一个类,这里就是group。这也是应用程序员主要的工作。
只要根据json的格式建立了库剩下的转换问题fastjson会全部搞定。
构建json对应的类
{"id":0,"name":"admin","users":[{"id":2,"name":"guest"},{"id":3,"name":"root"}]}
比如对于上面的这段json字符串。
- 每个{}可以看成是一个单独的类。
因此这里需要两个类一个是最外层的括号。名字可以随意取,第二个时users后面的括号。唯一需要考虑的一点是建内部类还是见两个文件,当然两种都是可行的。但是就我个人来说时推荐建public的内部类。 因为如果另一个json中有个内容不同的users就尴尬了。此外内部类必须时public的,因为如果不时public的话,当你取group的数据的时候如果需要用group.getUsers().getId()
。那Users不可访问就尴尬了。当然你可以用默认访问类型,然后将两个java放在一个包内。这样做可能安全一些,但是通常来说数据会单独放到另一个包中。 - 每个[]可以看成是一个集合
通常来说[]的类型都使用private List<User> users = new ArrayList<User>();
这样的格式来定义。不知道可不可以用其他类型,但是目前来说足够我用,不想深究了。 - 每个”*”内的内容必须时域的名字
其实json对应的类我理解的话就是一个javabean。会通过set和get来设定和获取对应域的值。所以这一点必须严格遵守。 - 值通常来说时字符串、数字或者{}对应的类
通常来说空值用""
来赋予。 - 构建好的类需要生成set和get方法
每个对象包括内部类都需要有get和set方法。eclipse自动生成就行。
没有其他需要说明的部分。根据上面的几条原则建立对应的json类通常来说比较简单。构建了json的对应类,转换就很简单了。
1 0
- 日常小结-关于模拟登陆的小结-fastjson库的使用小结
- 日常小结-关于模拟登陆的小结-okhttp库的使用小结
- 日常小结-关于模拟登陆的小结-抓包、cookie、session和token
- 日常小结-关于swing某死锁问题的小结
- FastJson使用小结
- 心情小结 程序员的日常
- 关于Bitmap的使用小结
- 关于使用BitMap的小结
- 关于Nginx的使用小结
- 关于Toolbar的使用小结
- oracle日常使用小结
- baseline日常使用小结
- 关于模拟登陆的小结-抓包、cookie、session和token
- 日常小结-协议小结
- 日常小结
- 日常小结
- NoSQL数据库MongoDB的日常使用小结(一)
- 关于C++的小结
- web框架——struts2操作
- Django 导出 Excel 代码详解
- 贝叶斯推断及其互联网应用(二):过滤垃圾邮件
- Actor::updateMassFromShapes: Compute mesh inertia tensor failed for one of the actor's mesh shapes!
- leetcode刷题,总结,记录,备忘 19
- 日常小结-关于模拟登陆的小结-fastjson库的使用小结
- 朴素贝叶斯分类器的应用
- Codeforces GYM 100738C Rating Shuffle
- HoloLens SDK开发(Unity3d+VS2015+HoloLens Emulator),项目配置
- Java并发编程:线程池的使用
- 快速排序(QuickSort)原理及Java 实现
- 优秀软件诞生的12个必备技术构成
- hibernate反向工程
- MVP 你应该了解的程序设计模式(一)