FastJson关于java的使用
介绍 Fastjson是阿里巴巴公司用Java语言编写的json 的编辑解析器,个人感觉非常好用。 官方网址:http://code.alibabatech.com/wiki/display/FastJSON/Home . 下载地址:http://code.alibabatech.com/mvn/releases/com/alibaba/fastjson/ 号称速度最快的json解析:数据如下, 我也没测过,不知真假。 简要谈谈Json 看看这个例子: {
"name":"中国","province":[ { "name":"黑龙江","cities":{ "city":["哈尔滨","大庆"] } },{ "name":"广东","cities":{ "city":["广州","深圳","珠海"] } },{ "name":"台湾","cities":{ "city":["台北","高雄"] } },] }
对于稍微是中国一点的人来说,这个例子很好懂,转化到Json,那么Json结构主要是两部分: 很多人说json就是键值对,很准确,更准确的是键值对套键值对,通常叫key-value对。 但是,value类型有很多,从简单到复杂: 总的讲,写一个Json写无数的键值对拼接起来。 指一个对象,包含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);//转成对象
注意的部分: 转化时属性的过滤 SimplePropertyPreFilter filter = newSimplePropertyPreFilter(China.class,"name");
String result = JSON.toJSONString(china,filter);
结果: {"name":"中国"}
注意:这个过滤是保留这部分内容,而不是过滤掉这部分内容! 使用注解 1.在某些场景,你可能需要定制序列化输出,比如说,希望序列化采用之后采用”ID”,而不是”id”,你可以使用@JSONField这个Annotation。 public class User { User user = …; 这样原本是id的标签变成了ID。 2.该字段不进行序列化。 3.对时间字段进行格式化处理,不处理是时间戳格式。 转自:http://www.52php.cn/article/p-qqcpuwoh-bex.html (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |