java fastjson 解析_java JSON解析库Alibaba Fastjson用法详解

本文实例讲述了java JSON解析库Alibaba Fastjson用法。分享给大家供大家参考,具体如下:

Json是一种轻量级的数据交换格式,应该在一个程序员的开发生涯中是常接触的。简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言。 易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。

现在主流的对象与 JSON 互转的工具很多,这里介绍的是阿里巴巴的开源库 - Fastjson。Fastjson是一个Java库,可用于将Java对象转换为其JSON表示。它还可用于将JSON字符串转换为等效的Java对象。Fastjson可以处理任意Java对象,包括您没有源代码的预先存在的对象。

验证json数据格式网址:http://tools.jb51.net/code/json

Fastjson 的优点

速度快

fastjson相对其他JSON库的特点是快,从2011年fastjson发布1.1.x版本之后,其性能从未被其他Java实现的JSON库超越。

使用广泛

fastjson在阿里巴巴大规模使用,在数万台服务器上部署,fastjson在业界被广泛接受。在2012年被开源中国评选为最受欢迎的国产开源软件之一。

测试完备

fastjson有非常多的testcase,在1.2.11版本中,testcase超过3321个。每次发布都会进行回归测试,保证质量稳定。

使用简单

fastjson的 API 十分简洁。

功能完备

支持泛型,支持流处理超大文本,支持枚举,支持序列化和反序列化扩展。

Fastjson依赖

com.alibaba

fastjson

1.2.47

FastJson下载地址:https://github.com/alibaba/fastjson

fea225f55a9403123b7a99064cdb4431.png

json格式

json数组格式:

mugbqfyxzgg.jpg

对象数组格式:

[

{alt: '[坏笑]', src:'http://img.t.sinajs.cn/t4/appstyle/expression/ext/normal/50/pcmoren_huaixiao_org.png'},

{alt: '[舔屏]', src:'http://img.t.sinajs.cn/t4/appstyle/expression/ext/normal/40/pcmoren_tian_org.png'},

{alt: '[污]', src: 'http://img.t.sinajs.cn/t4/appstyle/expression/ext/normal/3c/pcmoren_wu_org.png'}

]

json对象格式:

{

"ID": 1001,

"name": "张三",

"age": 24

}

因为之前在开发中遇到过这种json转换,当时用的是jackson,就觉得很麻烦,最近在写一个小项目时接触到Fastjson时,就觉得这个非常好用。

一般实际开发过程中,都是从前台拼接后传递过来的json字符串,下面测试就直接用的java字符串定义的json格式字符串(视情况而定)。

转换一定需要先添加依赖或者jar包才能使用。

把字符串json数组转为json格式数组取值:

String str = "[\"张三\",\"18\",\"宜昌\"]";

JSONArray array = JSONArray.parseArray(str);

System.out.println(array.get(0));

System.out.println(array.get(1));

System.out.println(array.get(2));

System.out.println();

输出结果

3012ea51d5231095217f7836aadcd711.png

字符串json对象数组转为json格式或者list对象

返回list集合对象时后面需要加上返回对象类

List array2 = JSONArray.parseArray(str1, User.class);

String str1 = "[" +

"{\"name\": \"张三\", \"age\": 24, \"city\": \"宜昌\"}," +

"{\"name\": \"李四\", \"age\": 25, \"city\": \"宜昌\"}," +

"{\"name\": \"王五\", \"age\": 22, \"city\": \"宜昌\"}" +

"]";

JSONArray array1 = JSONArray.parseArray(str1);

System.out.println(array1.get(0).toString());

System.out.println(array1.get(1).toString());

System.out.println(array1.get(2).toString());

System.out.println();

List array2 = JSONArray.parseArray(str1, User.class);

for(int i = 0; i < array2.size(); i++) {

System.out.println("姓名:"+array2.get(i).getName()+", 年龄:"+array2.get(i).getAge()+", 地址:"+array2.get(i).getCity());

}

输出结果

flqsklnzymu.jpg

字符串json对象格式转为实体对象

String str2 = "{\"name\": \"张三\", \"age\": 24, \"city\": \"宜昌\"}";

User user = JSONArray.parseObject(str2, User.class);

System.out.println("姓名:"+user.getName()+", 年龄:"+user.getAge()+", 地址:"+user.getCity());

输出结果:

104e22c4c11354b7a3da16e56149e883.png

json字符串转为json格式

String str2 = "{\"name\": \"张三\", \"age\": 24, \"city\": \"宜昌\"}";

JSONObject json = JSONObject.parseObject(str2);

String name = json.getString("name");

String age = json.getString("age");

String city = json.getString("city");

System.out.println(name);

System.out.println(age);

System.out.println(city);

运行结果:

918c9409a3e73f11659193f0083572ac.png

全部代码:

测试类:

import java.util.List;

import com.alibaba.fastjson.JSONArray;

import com.alibaba.fastjson.JSONObject;

public class JsonArray {

public static void main(String[] args) {

String str = "[\"张三\",\"18\",\"宜昌\"]";

JSONArray array = JSONArray.parseArray(str);

System.out.println(array.get(0));

System.out.println(array.get(1));

System.out.println(array.get(2));

System.out.println();

String str1 = "[" +

"{\"name\": \"张三\", \"age\": 24, \"city\": \"宜昌\"}," +

"{\"name\": \"李四\", \"age\": 25, \"city\": \"宜昌\"}," +

"{\"name\": \"王五\", \"age\": 22, \"city\": \"宜昌\"}" +

"]";

JSONArray array1 = JSONArray.parseArray(str1);

System.out.println(array1.get(0).toString());

System.out.println(array1.get(1).toString());

System.out.println(array1.get(2).toString());

System.out.println();

List array2 = JSONArray.parseArray(str1, User.class);

for(int i = 0; i < array2.size(); i++) {

System.out.println("姓名:"+array2.get(i).getName()+", 年龄:"+array2.get(i).getAge()+", 地址:"+array2.get(i).getCity());

}

System.out.println();

String str2 = "{\"name\": \"张三\", \"age\": 24, \"city\": \"宜昌\"}";

User user = JSONArray.parseObject(str2, User.class);

System.out.println("姓名:"+user.getName()+", 年龄:"+user.getAge()+", 地址:"+user.getCity());

System.out.println();

JSONObject json = JSONObject.parseObject(str2);

String name = json.getString("name");

String age = json.getString("age");

String city = json.getString("city");

System.out.println(name);

System.out.println(age);

System.out.println(city);

}

}

测试类对应的User类:

public class User {

private String name;

private String city;

private Integer age;

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public String getCity() {

return city;

}

public void setCity(String city) {

this.city = city;

}

public Integer getAge() {

return age;

}

public void setAge(Integer age) {

this.age = age;

}

public User(String name, String city, Integer age) {

super();

this.name = name;

this.city = city;

this.age = age;

}

}

测试结果:

48f8643f8dcb785a472d2d6ba07aef2b.png

推荐链接:【JSON解析】浅谈JSONObject的使用

差不多就这些吧,如果上面有什么地方错误了,请及时指出,避免更多人误解。如果有什么不懂的,欢迎交流!

PS:关于json操作,这里再为大家推荐几款比较实用的json在线工具供大家参考使用:

在线JSON代码检验、检验、美化、格式化工具:http://tools.jb51.net/code/json

JSON在线格式化工具:http://tools.jb51.net/code/jsonformat

在线XML/JSON互相转换工具:http://tools.jb51.net/code/xmljson

json代码在线格式化/美化/压缩/编辑/转换工具:http://tools.jb51.net/code/jsoncodeformat

在线json压缩/转义工具:

http://tools.jb51.net/code/json_yasuo_trans

更多关于java相关内容感兴趣的读者可查看本站专题:《Java操作json格式数据技巧总结》、《Java数组操作技巧总结》、《Java字符与字符串操作技巧总结》、《Java数学运算技巧总结》、《Java数据结构与算法教程》及《Java操作DOM节点技巧总结》

希望本文所述对大家java程序设计有所帮助。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值