FastJson关于java的使用
来源:互联网 发布:陌陌八格切图软件 编辑:程序博客网 时间:2024/05/16 06:54
介绍
Fastjson是阿里巴巴公司用java语言编写的json 的编辑解析器,个人感觉非常好用。
官方网址:http://code.alibabatech.com/wiki/display/FastJSON/Home .
可以在此网站与开发人员交流和查看更新。下载地址:http://code.alibabatech.com/mvn/releases/com/alibaba/fastjson/
号称速度最快的json解析:数据如下,
我也没测过,不知真假。
简要谈谈Json
Json全称JavaScript Object Notation ,是基于javascript的一个子集,是一种完全独立语言的格式。它能迅速的取代XML成为最受人欢迎的格式还是有它的原因的。我们自己读Json要从大局观着手,有点耐心,先了解结构。
看看这个例子:
{
"name":"中国",
"province":[
{
"name":"黑龙江",
"cities":{
"city":["哈尔滨","大庆"]
}
},
{
"name":"广东",
"cities":{
"city":["广州","深圳","珠海"]
}
},
{
"name":"台湾",
"cities":{
"city":["台北","高雄"]
}
},
]
}
对于稍微是中国一点的人来说,这个例子很好懂,转化到Json,那么Json结构主要是两部分:
1,映射:映射就是冒号那种形式,如-->"name":"中国",
2,序列:就是并列存在的province里面的大括号是并列的,city里面 的城市也是并列的。映射到程序里相当于数组。
很多人说json就是键值对,很准确,更准确的是键值对套键值对,通常叫key-value对。
Key只能是string类型的,例如上面的name,city,province。
但是,value类型有很多,从简单到复杂:
A: 基本类型(int,long,String).
B: 对象类型:对应程序将就是大括号,属于自定义的部分,里面还是Json类型。
C:序列类型:对应程序就是中括号,比如city后面的。。里面的属性是value类型,还可以套Json。
总的讲,写一个Json写无数的键值对拼接起来。
代码示例
Fastjson就是通过上面对json 的看法,将json的每个value对都映射到java对象中,达到转化的目的。
代码讲解
生成Json
Fastjson是通过java对象来产生json的,我们来一步一步分析这个java对象是怎么产生的。1,最外层大括号
指一个对象,包含String属性的 name和province属性的province,province后面接的是一个中括号,那么这是一个array对象,我们把它定为List<Province>province;2, 容我懒惰,以此类推
在对象Province中的city是一个数组:String[] city,当然写成list也没有关系。
import java.util.List;public class China { private String name; private List<Province>province; public String getName() { return name; } public void setName(String name) { this.name = name; } public List<Province> getProvince() { return province; } public void setProvince(List<Province> province) { this.province = province; }}
public class Province { private City citys; private String name; public String getName() { return name; } public void setName(String name) { this.name = name; } public City getCitys() { return citys; } public void setCitys(City citys) { this.citys = citys; } }
public class City { private String[]city; public String[] getCity() { return city; } public void setCity(String[] city) { this.city = city; }}
最后,测试一下:
public static void main(String[] args) { China china = new China(); china.setName("中国"); List<Province> provinces = new ArrayList<>(); Province hei = new Province(); hei.setName("黑龙江"); City heiCity = new City(); heiCity.setCity(new String[] { "哈尔滨", "大庆" }); hei.setCitys(heiCity); provinces.add(hei); Province guang = new Province(); guang.setName("广东"); City guangCity = new City(); guangCity.setCity(new String[] { "广州", "深圳", "珠海" }); guang.setCitys(guangCity); provinces.add(guang); Province tai = new Province(); tai.setName("台湾"); City taiCity = new City(); taiCity.setCity(new String[] { "台北", "高雄 " }); tai.setCitys(taiCity); provinces.add(tai); china.setProvince(provinces); String result=JSON.toJSONString(china);
结果:
{"name":"中国""province":[{"citys":{"city":["哈尔滨","大庆"]},"name":"黑龙江"},{"citys":{"city":["广州","深圳","珠海"]},"name":"广东"},{"citys":{"city":["台北","高雄 "]},"name":"台湾"}]}
结果的list和array 的顺序是有序的,但是并列的键值对顺序是按照key 的首字母ASCII 顺序排列的。
Json转化为对象
和上述转化同理,列好了相对应的类,转化很方便。
在上面测试代码后面加一句
..... String result=JSON.toJSONString(china);//转成json 字符串 System.out.println(result); China c2=JSON.parseObject(result, China.class);//转成对象
注意的部分:
1,对象中想转化为json 的属性,必须拥有get方法。get方法的规范,方法名get后面的单词第一个字母要大写。
2,key 的部分的属性名称(如:”name”)是基于类中该属性get方法方法名的那个单词产生的,只是把第一个字母的大写变成小写。
转化时属性的过滤
在对象生成json字符串时,只想转化一部分的属性,其他的不转化,怎么做呢?将上面转化的地方代码,替换如下:SimplePropertyPreFilter filter = newSimplePropertyPreFilter(China.class, "name");String result = JSON.toJSONString(china, filter);
结果如下:
{"name":"中国"}
注意:这个过滤是保留这部分内容,而不是过滤掉这部分内容!
使用注释
在某些场景,你可能需要定制序列化输出,比如说,希望序列化采用之后采用"ID",而不是"id",你可以使用@JSONField这个Annotation。
public class User {
@JSONField(name="ID")
public int getId() { ... }
}
User user = ...;
JSON.toJSONString(user); // {"ID":234}
这样原本是id的标签变成了ID。
- FastJson关于java的使用
- FastJson关于java的使用
- FastJson关于java的使用
- FastJson-fastjson的简单使用
- java开发中fastjson的使用
- Java的JSON处理器fastjson使用详解
- Java编程:阿里巴巴的fastjson使用示例
- Java的Json解析包FastJson使用
- java使用fastjson进行数据的封装
- 关于alibaba的fastjson
- 关于fastJSON的@JSONField
- JAVA fastjson 使用
- 关于Android studio 使用fastjson报错的解决方法
- 关于fastjson,jackson,struts2插件的使用(仅供参考)
- 关于java 正则表达式 与 fastjson的兼容性问题
- fastjson的使用心得
- fastjson的简单使用
- fastjson 的简单使用
- 内存管理、内存分配malloc、free、realloc,printf小结
- A*算法解决八数码问题
- FreeModbus--完全分析--系列1
- poj 3146 Interesting Yang Hui Triangle(lucas定理的应用)
- java学习之路-----设计模式---工厂模式
- FastJson关于java的使用
- Android 在开发环境中已更换图片 但运行结果的图片仍为旧图片
- jQuery中的this与$(this)
- android service 的简单实例 binder service
- ARM流水线(pipeline)
- Android ListView onScroll NullPointerException ListView滚动崩溃
- 【人生九面,面面皆需度】
- JDBC访问Mysql出现中文乱码问题
- java学习之路--设计模式---代理模式