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依赖
<dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.47</version></dependency>
FastJson下载地址:https://github.com/alibaba/fastjson
json格式
json数组格式:
对象数组格式:
[ {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();
输出结果
字符串json对象数组转为json格式或者list对象
返回list集合对象时后面需要加上返回对象类
List<User> 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<User> 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());}
输出结果
字符串json对象格式转为实体对象
String str2 = '{'name': '张三', 'age': 24, 'city': '宜昌'}';User user = JSONArray.parseObject(str2, User.class);System.out.println('姓名:'+user.getName()+', 年龄:'+user.getAge()+', 地址:'+user.getCity());
输出结果:
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);
运行结果:
全部代码:
测试类:
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<User> 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;}}
测试结果:
推荐链接:【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程序设计有所帮助。
相关文章:
1. css代码优化的12个技巧2. MyBatis JdbcType 与Oracle、MySql数据类型对应关系说明3. ASP 信息提示函数并作返回或者转向4. .NET SkiaSharp 生成二维码验证码及指定区域截取方法实现5. 在JSP中使用formatNumber控制要显示的小数位数方法6. CentOS邮件服务器搭建系列—— POP / IMAP 服务器的构建( Dovecot )7. ASP中实现字符部位类似.NET里String对象的PadLeft和PadRight函数8. jsp网页实现贪吃蛇小游戏9. 存储于xml中需要的HTML转义代码10. ASP中if语句、select 、while循环的使用方法
