当前位置:   article > 正文

Fastjson的学习与使用_fastjson github

fastjson github

一、Fastjson 简介与特性

简介

Fastjson 是一个 Java 库,可以将 Java 对象转换为 JSON 格式,当然它也可以将 JSON 字符串转换为 Java 对象。

Fastjson 可以操作任何 Java 对象,即使是一些预先存在的没有源码的对象。

Fastjson 源码地址:https://github.com/alibaba/fastjson

Fastjson 中文 Wiki:https://github.com/alibaba/fastjson/wiki/Quick-Start-CN

特性

提供服务器端、安卓客户端两种解析工具,性能表现较好。

提供了 toJSONString() 和 parseObject() 方法来将 Java 对象与 JSON 相互转换。调用toJSONString方 法即可将对象转换成 JSON 字符串,parseObject 方法则反过来将 JSON 字符串转换成对象。

允许转换预先存在的无法修改的对象(只有class、无源代码)。

Java泛型的广泛支持。

允许对象的自定义表示、允许自定义序列化类。

支持任意复杂对象(具有深厚的继承层次和广泛使用的泛型类型)。

二、下载和使用

在 maven 中央仓库中直接下载:

http://repo1.maven.org/maven2/com/alibaba/fastjson/
  • 1

或者配置 maven 依赖:

<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>fastjson</artifactId>
    <version>x.x.x</version>
</dependency>
  • 1
  • 2
  • 3
  • 4
  • 5

三、Fastjson

JSONObject代表json对象

JSONArray代表json对象数组,

JSON代表JSONObject和JSONArray的转化。

1、JSONObject(对象)

  • getString(String key):用于获取json对象中的字符串型数据
        JSONObject s  = new JSONObject();
        s.put("NAME","测试名称");
        s.put("CODE","oper_code_xxxx");

        System.out.println(s.getString("NAME"));
  • 1
  • 2
  • 3
  • 4
  • 5

输出:

测试名称
  • 1

  • getInteger(String key):该方法获取json对象中的整型数据
        JSONObject s  = new JSONObject();
        s.put("NAME","测试名称");
        s.put("age",20);
        System.out.println(s.getInteger("age"));
  • 1
  • 2
  • 3
  • 4

输出:

20
  • 1

  • 总结:JSONObject对应json对象,通过各种形式的get()方法可以获取json对象中的数据,也可利用诸如size(),isEmpty()等方法获取"键:值"对的个数和判断是否为空。其本质是通过实现Map接口并调用接口中的方法完成的。

2、JSONArray(数组)

  • getJSONObject(int index):该方法用于获取json对象数组中指定位置的JSONObject对象,配合size()方法,可用于遍历json对象数组中的各个对象。
        int size = jsonObject.getJSONArray("productList").size();
        for (int i = 0; i < size; i++) {
            log.info(String.valueOf(jsonObject.getJSONArray("productList").getJSONObject(i)));
        }
  • 1
  • 2
  • 3
  • 4

在这里插入图片描述

3、JSON(转换)

toJSONString():实现json对象 / javabean对象 -> json字符串

parseObject(),实现json字符串 -> json对象 / javabean对象

JSONArray():实现json字符串转化为json对象数组或List

与parseObject()方法类似,parseArray()将json字符串转化为json对象数组或转化成包含泛型的List

toJSON():实现javabean对象转化为json对象

toJavaObject():实现json对象转化为javabean对象

4、json字符串与javaBean之间的转换

json字符串与javaBean之间的转换可以使用 TypeReference 这个类,也可以使用Class这个类。推荐使用第二种Class类反射来实现,比较简单。

Student stu1=JSON.parseObject(jsonstr,new TypeReference<Student>(){});
Student stu1=JSON.parseObject(jsonstr,Student.class);
  • 1
  • 2

5、JSONArray 按某字段进行排序

JSONArray jsonArray = JSON.parseArray(searchCondition.get("data").toString());

//对jsonArray中的数据按autoId进行正排
Collections.sort(jsonArray, new Comparator<Object>() {
   @Override
   public int compare(Object o1, Object o2) {
                 JSONObject js1 = (JSONObject)o1;
                 JSONObject js2 = (JSONObject)o2;
                 Integer i1 = Integer.valueOf(js1.get("autoId").toString());
                 Integer i2 = Integer.valueOf(js2.get("autoId").toString());
                 return i1-i2;
   }});

return jsonArray;
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

6、JSONString转换成JSONObject/JSONArray时保证顺序不变

转换时加上:Feature.OrderedField

JSONObject

        String textObject = "{"row1":{"userNmae":"zhangsan"},"row2":{"userNmae":"lisi"},"row3":{"userNmae":"wangwu"}}";
        int i = 1;
        JSONObject json2 = JSONObject.parseObject(textObject, Feature.OrderedField);
        Iterator<String> iterator2 = json2.keySet().iterator();
        while (iterator2.hasNext()) {
            String key = iterator2.next();
            System.out.println(i + " : " + json2.get(key));
            i++;
        }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

JSONArray

        String textArray = "[{"people":{"row1":{"userNmae":"zhangsan"},"row2":{"userNmae":"lisi"},"row3":{"userNmae":"wangwu"}}}]";
        
        //不直接转Array,调用parse()方法,当作JSONObject转,然后强制转换。
        JSONArray array = (JSONArray) JSONObject.parse(textArray, Feature.OrderedField);
  • 1
  • 2
  • 3
  • 4

7、JSONArray 转为 List<JavaBean> 对象

JSONObject obj;

List<ResourceEntity> data = obj.getJSONArray("data").toJavaList(ResourceEntity.class);
  • 1
  • 2
  • 3

8、List<Object> 转为 List<JavaBean>

在这里插入图片描述

	List<Object> res = getData();

    for (Object o : res) {
        String jsonObj = JSON.toJSONString(o);
        ResourceEntity resource = JSONObject.parseObject(jsonObj, ResourceEntity.class);
    }

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

9、Map 转为 JSON

public static void main(String[] args) {
        Map<String, String> map = new HashMap<>();
        map.put("key1", "value1");
        map.put("key2", "value2");

        String jsonString = JSONObject.toJSONString(map);
        System.out.println(jsonString);
    }

// 输出
{"key1":"value1","key2":"value2"}

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

10、JSONObject 按顺序添加对象

JSONObject total = new JSONObject(new LinkedHashMap<>());
total.put("ivalueType", "总积分");
total.put("ivalue", result.getString("totalIvalue"));
  • 1
  • 2
  • 3

参考:
菜鸟教程
博客

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小桥流水78/article/detail/882728
推荐阅读
相关标签
  

闽ICP备14008679号