Fastjson 序列化与反序列化

JSON这个类是fastjson API的入口,主要的功能都通过这个类提供。

序列化API

    // 将Java对象序列化为JSON字符串,支持各种各种Java基本类型和JavaBean
    public static String toJSONString(Object object, SerializerFeature... features);

    // 将Java对象序列化为JSON字符串,返回JSON字符串的utf-8 bytes
    public static byte[] toJSONBytes(Object object, SerializerFeature... features);

    // 将Java对象序列化为JSON字符串,写入到Writer中
    public static void writeJSONString(Writer writer,
                                       Object object,
                                       SerializerFeature... features);

    // 将Java对象序列化为JSON字符串,按UTF-8编码写入到OutputStream中
    public static final int writeJSONString(OutputStream os,
                                            Object object,
                                            SerializerFeature... features);

JSON字符串反序列化API

    // 将JSON字符串反序列化为JavaBean
    public static <T> T parseObject(String jsonStr,
                                    Class<T> clazz,
                                    Feature... features);

    // 将JSON字符串反序列化为JavaBean
    public static <T> T parseObject(byte[] jsonBytes,  // UTF-8格式的JSON字符串
                                    Class<T> clazz,
                                    Feature... features);

    // 将JSON字符串反序列化为泛型类型的JavaBean
    public static <T> T parseObject(String text,
                                    TypeReference<T> type,
                                    Feature... features);

    // 将JSON字符串反序列为JSONObject
    public static JSONObject parseObject(String text);

Demo

String jsonStr = "{  " +
                "  \"animals\": {  " +
                "    \"dog\": [{  " +
                "        \"name\": \"Rufus\",  " +
                "        \"breed\": \"labrador\"  " +
                "      },  " +
                "      {  " +
                "        \"name\": \"Marty\",  " +
                "        \"breed\": \"whippet\"  " +
                "      }  " +
                "    ],  " +
                "    \"cat\": {  " +
                "      \"name\": \"Matilda\"  " +
                "    }  " +
                "  }  " +
                "}";

parse Tree

//parse Tree
JSONObject jsonObj = JSON.parseObject(jsonStr);
System.out.println("jsonObj:" + jsonObj);//{"animals":{"cat":{"name":"Matilda"},"dog":[{"name":"Rufus","breed":"labrador"},{"name":"Marty","breed":"whippet"}]}}
JSONObject animals = jsonObj.getJSONObject("animals");
System.out.println("animals:" + animals);//{"cat":{"name":"Matilda"},"dog":[{"name":"Rufus","breed":"labrador"},{"name":"Marty",","breed":"whippet"}]}
JSONArray dogArr = animals.getJSONArray("dog");
System.out.println("dogArr:" + dogArr);//[{"name":"Rufus","breed":"labrador"},{"name":"Marty","breed":"whippet"}]
JSONObject dog0 = dogArr.getJSONObject(0);
System.out.println("dog0:" + dog0);//{"name":"Rufus","breed":"labrador"}
String dog0name = dog0.getString("name");
System.out.println("dog0name:" + dog0name);//Rufus
 

parse POJO

//parse POJO
JsonRootBean model = JSON.parseObject(jsonStr, JsonRootBean.class);
System.out.println("model:" + model);//JsonRootBean{animals=Animals{dog=[Dog{name=‘Rufus‘, breed=‘labrador‘}, Dog{name=‘Marty‘, breed=‘whippet‘}], cat=Cat{name=‘Matilda‘}}}

parse POJO Generic

//parse POJO Generic
Type type = new TypeReference<List<Dog>>() {
}.getType();
List<Dog> list = JSON.parseObject(dogArr.toString(), type);
System.out.println("list:" + list);//[Dog{name=‘Rufus‘, breed=‘labrador‘}, Dog{name=‘Marty‘, breed=‘whippet‘}]

convert POJO to json string

//convert POJO to json string
String modelStr = JSON.toJSONString(model);
System.out.println("modelStr:" + modelStr);//{"animals":{"cat":{"name":"Matilda"},"dog":[{"breed":"labrador","name":"Rufus"},{"breed":"whippet","name":"Marty"}]}}

convert POJO to json bytes

//convert POJO to json bytes
byte[] modelBytes = JSON.toJSONBytes(model);
System.out.println("modelBytes:" + modelBytes.length);//117

参考文章:

https://www.w3cschool.cn/fastjson/fastjson-api.html

原文地址:https://www.cnblogs.com/ooo0/p/10902202.html

时间: 2024-11-06 14:44:30

Fastjson 序列化与反序列化的相关文章

Android 中的Json解析工具fastjson 、序列化、反序列化

Android中通常需要访问服务器,然而服务器返回的数据很多时候都是Json格式 1.fastjson简介 阿里巴巴FastJson是一个Json处理工具包,包括“序列化”和“反序列化”两部分,它具备如下特征:    速度最快,测试表明,fastjson具有极快的性能,超越任其他的Java Json parser.包括自称最快的JackJson: 功能强大,完全支持JavaBean.集合.Map.日期.Enum,支持范型,支持自省:无依赖,能够直接运行在Java SE 5.0以上版本:支持And

Json数据的序列化与反序列化的三种常用方法介绍

以下内容是本作者从官网中看相应的教程后所做的demo,其体现了作者对相关知识点的个人理解..作者才疏学浅,难免会有理解不到位的地方..还请各位读者批判性对待... 本文主要介绍在Json数据的序列化与反序列化的过程中我经常用到的三种工具的基本使用方法,及其他们之间 的比较...希望能够对读者们有一些帮助... 这里介绍到的三种解析与生成Json数据的方法分别是:标准JSON解析与生成方法.使用gson解析与生成JSON数据 .使用fastJsson解析与生成JSON数据. 首先,这些工具都可以到

C# 匿名类型序列化、反序列化

前言 现在提倡前后端分离,分离后服务全部采用接口的方式给前端提供服务,当我们处理自定义查询时必定会多表查询,而处理多表查询时我们又懒的去建view model,建的过多项目也凌乱的很,所以在dao层处理自定义查询时采用匿名类型返回json. 序列化.反序列化 List<object> oData= new List<object>(); oData.Add(new {ID=1,Name="kd",Age=31}); oData.Add(new {ID=2,Nam

使用TProfiler分析并调优项目中的Fastjson序列化代码

新项目年后就上线了,现在业务上没什么问题,就用TProfiler做了下性能分析,果然有坑. 一.TProfiler入门 高手请自觉略过本节. 1.简介 TProfiler是阿里巴巴开源的一款性能分析工具.号称可以用于生产环境进行长期的性能分析.测试程序部署后,在低峰期对响应时间影响20%,在高峰期对QPS影响30%.详细介绍请见官方WIKI. 2.简要的实现原理 TProfiler的实现基于JAVA的Instrumentation 和ASM.Instrumentation可以理解为一种虚拟机级别

二进制序列化与反序列化。Net理论篇上(一)

对于从事底层信息通信的同行而言,序列化及反序列化想必都是耳熟能详的.脱离很多书面的标准概念,就个人理解而言,序列化和反序列化的本质其实为了找到一种公共的通用的数据格式达到一个无界的境界,正如方言对于普通话,各国语言对于英语.而我们需要做的是去发现这么一种具体的格式,并且完成一个相对对称的特性,如同压缩跟解压缩. 常规的序列化和反序列化的格式通常有如下几种:binary,JSON, XML和SOAP等. 当然有其他的,这个只能恕我孤陋寡闻了.通常我们会选取短小精悍的JSON 和更具通用的XML,当

jackson实现序列化的反序列化解析

现在项目开发过程中,字符串的传递成为前后端交互的主要方式,主要是因为字符串不会出现乱码等问题,传送方式是字节码传递,效率比实体较安全. 常见的Json类库有Gson.JSON-lib和Jackson,fastjson(阿里提供,自称效率最高的)等,Jackson相对来说比较高效,在项目中主要使用Jackson进行JSON和Java对象转换,下面给出一些Jackson的JSON操作方法. 一,下载jackson http://wiki.fasterxml.com/JacksonDownload 二

Java Json 序列化与反序列化

JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式. 易于人阅读和编写.同时也易于机器解析和生成. 它基于JavaScript Programming Language, Standard ECMA-262 3rd Edition - December 1999的一个子集. JSON采用完全独立于语言的文本格式,这些特性使JSON成为理想的数据交换语言. 下面介绍两款自己在开发中常用的处理Json的Java开源类库:Gson和Fastjson 1.Gso

springboot学习(三)————使用HttpMessageConverter进行http序列化和反序列化

以下内容,如有问题,烦请指出,谢谢! 对象的序列化/反序列化大家应该都比较熟悉:序列化就是将object转化为可以传输的二进制,反序列化就是将二进制转化为程序内部的对象.序列化/反序列化主要体现在程序I/O这个过程中,包括网络I/O和磁盘I/O. 那么什么是http序列化和反序列化呢? 在使用springmvc时,我们经常会这样写: @RestController @RequestMapping("/users") public class UserController { @Auto

2.序列化与反序列化

Java 领域的对象如何传输 基于 socket 进行对象传输 先举个简单的例子,基于我们前面几次课程的只是,写一个 socket 通信的代码 User public class User { private String name; public String getName() { return name; } public void setName(String name) { this.name = name; } } SocketServerProvider public static