日常小结-关于模拟登陆的小结-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
原创粉丝点击