Json是一种轻量级的数据交换格式,应该在一个程序员的开发生涯中是常接触的。简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言。 易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。
现在主流的对象与 JSON 互转的工具很多,这里介绍的是阿里巴巴的开源库 – Fastjson。Fastjson是一个Java库,可用于将Java对象转换为其JSON表示。它还可用于将JSON字符串转换为等效的Java对象。Fastjson可以处理任意Java对象,包括您没有源代码的预先存在的对象。
验证json数据格式网址:http://www.bejson.com/
Fastjson 的优点
- 速度快
- fastjson相对其他JSON库的特点是快,从2011年fastjson发布1.1.x版本之后,其性能从未被其他Java实现的JSON库超越。
- 使用广泛
- fastjson在阿里巴巴大规模使用,在数万台服务器上部署,fastjson在业界被广泛接受。在2012年被开源中国评选为最受欢迎的国产开源软件之一。
- 测试完备
- fastjson有非常多的testcase,在1.2.11版本中,testcase超过3321个。每次发布都会进行回归测试,保证质量稳定。
- 使用简单
- fastjson的 API 十分简洁。
- 功能完备
- 支持泛型,支持流处理超大文本,支持枚举,支持序列化和反序列化扩展。
Fastjson依赖
1 | com.alibabafastjson1.2.47 |
FastJson下载地址:https://github.com/alibaba/fastjson
json格式
json数组格式:
对象数组格式:
1 2 3 4 5 | [ {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' }, ] |
json对象格式:
1 2 3 4 5 | { "ID" : 1001, "name" : "张三" , "age" : 24 } |
因为之前在开发中遇到过这种json转换,当时用的是jackson,就觉得很麻烦,最近在写一个小项目时接触到Fastjson时,就觉得这个非常好用。
一般实际开发过程中,都是从前台拼接后传递过来的json字符串,下面测试就直接用的java字符串定义的json格式字符串(视情况而定)。
转换一定需要先添加依赖或者jar包才能使用。
把字符串json数组转为json格式数组取值:
1 2 3 4 5 6 7 | 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集合对象时后面需要加上返回对象类
1 | List array2 = JSONArray.parseArray(str1, User. class ); |
1 2 3 4 5 6 7 8 9 10 11 12 13 | 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 |
输出结果
字符串json对象格式转为实体对象
1 2 3 | String str2 = "{" name ": " 张三 ", " age ": 24, " city ": " 宜昌 "}" ; User user = JSONArray.parseObject(str2, User. class ); System.out.println( "姓名:" +user.getName()+ ", 年龄:" +user.getAge()+ ", 地址:" +user.getCity()); |
输出结果:
json字符串转为json格式
1 2 3 4 5 6 7 8 | 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); |
运行结果:
全部代码
测试类:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | 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 |
测试类对应的User类:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | 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; } } |
测试结果:
差不多就这些吧,以上为个人经验,希望能给大家一个参考,也希望大家多多支持IT俱乐部。