IT俱乐部 Java Alibaba Fastjson之超好用的JOSN解析库

Alibaba Fastjson之超好用的JOSN解析库

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数组格式:

对象数组格式:

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俱乐部。

本文收集自网络,不代表IT俱乐部立场,转载请注明出处。https://www.2it.club/code/java/7020.html
上一篇
下一篇
联系我们

联系我们

在线咨询: QQ交谈

邮箱: 1120393934@qq.com

工作时间:周一至周五,9:00-17:30,节假日休息

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部