一、介绍
1. 什么是fastjson?
fastjson是阿里巴巴的开源JSON解析库,它可以解析JSON格式的字符串,支持将Java Bean序列化为JSON字符串,也可以从JSON字符串反序列化到JavaBean。
Fastjson使用场景
Fastjson已经被广泛使用在各种场景,包括cache存储、RPC通讯、MQ通讯、网络协议通讯、Android客户端、Ajax服务器处理程序等等。
2.fastjson的优点
2.1 速度快
fastjson相对其他JSON库的特点是快,从2011年fastjson发布1.1.x版本之后,其性能从未被其他Java实现的JSON库超越。
2.2 使用广泛
fastjson在阿里巴巴大规模使用,在数万台服务器上部署,fastjson在业界被广泛接受。在2012年被开源中国评选为最受欢迎的国产开源软件之一。
二、代码示例
使用示例见链接:https://www.w3cschool.cn/fastjson/
代码示例:
package com.asd.reserve.utils.fastjson.demo2; /** * @author zs * @date 2019/11/22 14:53 */ import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import java.util.ArrayList; import java.util.List; public class FastJsonDemo { static class Person{ private String id ; private String name; private int age ; public Person(){ } public Person(String id,String name,int age){ this.id=id; this.name=name; this.age=age; } public String getId() { return id; } public void setId(String id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } @Override public String toString() { return "Person [age=" + age + ", id=" + id + ", name=" + name + "]"; } } public static void main(String[] args) { //method1(); //method2(); //method3(); //method4(); method5(); } /** *@Author: zs on 2020/1/3 9:56 *@param: *@return: *@Description:对象与json串互转 */ public static void method1(){ System.out.println("javabean转化示例开始----------"); Person person = new Person("1","fastjson",1); //将javabean转化成json字符串 String jsonString = JSON.toJSONString(person); System.out.println(jsonString); //将json字符串转化成javabean对象, person =JSON.parseObject(jsonString,Person.class); System.out.println(person.toString()); System.out.println("javabean转化示例结束----------"); } /** *@Author: zs on 2020/1/3 9:56 *@param: *@return: *@Description:List集合与json串互转 */ public static void method2(){ System.out.println("List<javabean>转化示例开始----------"); Person person1 = new Person("1","fastjson1",1); Person person2 = new Person("2","fastjson2",2); List<Person> personList = new ArrayList<Person>(); personList.add(person1); personList.add(person2); String jsonString = JSON.toJSONString(personList); System.out.println("json字符串:"+jsonString); //解析json字符串 List<Person> persons2 = JSON.parseArray(jsonString,Person.class); //输出解析后的person对象,也可以通过调试模式查看persons2的结构 System.out.println("person1对象:"+persons2.get(0).toString()); System.out.println("person2对象:"+persons2.get(1).toString()); System.out.println("List<javabean>转化示例结束----------"); } public static void method3(){ String result = "生成成功"; String status = JSON.toJSONString(result); System.out.println(result); System.out.println(status); } public static void method4(){ String status = "{"status":"生成成功"}"; JSONObject jsonObject = JSONObject.parseObject(status); Object o = jsonObject.get("status"); System.out.println(o); } public static void method5(){ /** * 数据样式 * { status: success, root: [{ type: 'long', propName: 'reins', location: '0', propValue: '5228', desc: 'zs' }, { type: 'char', propName: 'reserve', location: '0', propValue: '-1', desc: 'zs' }] }*/ String json = "{success: true,root: [{id: '123',name: '123',age: '123'}, {id: '123',name: '12321',age: '13123'}]}"; JSONObject jsonObject = JSONObject.parseObject(json); Object success = jsonObject.get("success"); Object root = jsonObject.get("root"); List<Person> personList = JSON.parseArray(root+"", Person.class); System.out.println(success); } }
三、prettyJson-格式化
/** * 跳转到xxl * @return xxl-url */ @PostMapping("/general/xxl/url1") public ApiResponse<String> getXxlUrl1(){ String a = "{"key":"value","key2":"value2"}"; System.out.println(a); System.out.println(prettyJson(a)); return ApiResponseMapper.ok(address); } /** * json 美化 * @param json * @return */ private static String prettyJson(String json) { JSONObject jsonObject = null; try { jsonObject = JSONObject.parseObject(json); } catch (Exception e) { return json; } return JSONObject.toJSONString(jsonObject, true); }
输出:
未格式化:
{"key":"value","key2":"value2"} 格式化后:
{ "key2":"value2", "key":"value" }
使用的时候会发现fastjson对json的属性有自己的排序的方式,因为json本来是不保证属性的次序的。就像上面那样,我的入参明明是key1在前,但是美化后变成了key2在前。这个时候需要加一句让fastjson保证字符串中json的次序即可。
用这个方法就行了
jsonObject = JSONObject.parseObject(json, Feature.OrderedField);
参看链接:https://blog.csdn.net/u010251278/article/details/91992618
四、vuejson格式化插件
vue-json-viewer
监控项目在公司没有下下来包,就没有测试。
参看链接:
https://www.cnblogs.com/TestingShare/p/14336612.html
https://www.cnblogs.com/phermis/p/10791158.html