FastJson简介

  Fastjson是阿里巴巴开发的一个开源Java库,用于处理JSON数据,广泛应用于Web服务、API接口、数据交换等多个场景。

FastJson的作用

  主要作用是用于将Java对象转换为JSON格式,或将JSON字符串转换为Java对象。它可以操作任何Java对象。

主要特性有:

.a.高性能:采用“假定有序快速匹配”的算法,将JSON Parse的性能提升到极致,成为Java语言中最快的JSON库之一。

.b.功能完善:支持丰富的数据类型转换、格式化输出、自定义序列化与反序列化等。

.c.简单易用:提供简洁明了的API接口,方便开发者快速上手。

FastJson 的依赖以及常规用法

对应的Maven依赖坐标如下:

<dependency>

<groupId>com.alibaba.fastjson2</groupId>

<artifactId>fastjson2</artifactId>

<version>2.0.43</version>

</dependency>

常规用法如下:

一、校验JSON字符串格式是否合法

用法一

JSON.isValid(字符串)

表示判断一个字符串是否为一个合法的JSON数据

JSON.isValidObject(字符串)

表示判断一个字符串是否为一个合法的JSON对象数据

用法二

JSON.isValidArray(字符串)

表示判断一个字符串是否为一个合法的JSON数组数据

.二、Java对象(自定义类,list集合,Map集合)等转JSON字符串的方式

JSON.toJSONString(Object 数据类型)

表示将一个Java对象转换为JSON字符串

.三、JSON格式数据和Java对象相互转换

用法一

JSON.parseObject(字符串)

表示将JSON字符串数据转换为JSONObject对象

用法二

JSON.parseObject(字符串,  class)

将一个JSON字符串数据转换为一个Java对象

.四、JSON字符串和Java(集合)转换

用法一

JSON.parseArray(字符串)

表示将一个JSON字符串转换为Java(list)集合

FastJson的原理

Fastjson在序列化和反序列化过程中,通过反射机制和无参构造函数来实现对象和JSON字符串之间的转换。

FastJson案例演示:

示例代码一:

public static void main(String[] args) {

String jsonStr = "{\"error\": \"invalid_request\", \"error_description\": \"该用户名不存在!\"}";

// 验证JSON数据 是否合法

boolean flag = JSON.isValidObject(jsonStr);

System.out.println("flag-->" + flag);

flag = JSON.isValid(jsonStr);

System.out.println("flag-->" + flag);

flag = JSON.isValidArray(jsonStr);

System.out.println("flag-->" + flag);

// JSON字符串 转 JSONObject(fastjson内置对象)

JSONObject jsonObject = JSON.parseObject(jsonStr);

Object error = jsonObject.get("error");

System.out.println("error-->" + error);

Object errorDescription = jsonObject.get("error_description");

System.out.println("errorDescription-->" + errorDescription);

// JSON字符串 转 Java对象

ResultTest resultTest = JSON.parseObject(jsonStr, ResultTest.class);

System.out.println("error-->" + resultTest.getError());

System.out.println("errorDescription-->" + resultTest.getError_description());

// Java对象 转 JSON字符串

String jsonString = JSON.toJSONString(resultTest);

System.out.println("jsonString-->" + jsonString);

}

测试结果如下:

示例代码二:

public static void main(String[] args) {

// JSON 字符串转 JSONObject

String jsonStr = "{ \"code\":\"10000\",  \"data\": [\"重庆\", \"成都\", \"西安\"]}";

// 验证JSON数据 是否合法

boolean flag = JSON.isValidObject(jsonStr);

System.out.println("flag-->" + flag);

flag = JSON.isValid(jsonStr);

System.out.println("flag-->" + flag);

flag = JSON.isValidArray(jsonStr);

System.out.println("flag-->" + flag);

JSONObject jsonObject = JSON.parseObject(jsonStr);

Object code = jsonObject.get("code");

System.out.println("code-->" + code);

Object data = jsonObject.get("data");

System.out.println("data-->" + data);

// JSON字符串 转 JSONArray(fastjson内置对象)

JSONArray objects = JSON.parseArray(data.toString());

System.out.println("objects-->" + objects.get(1));

// JSON字符串 转 Java对象

ResultArrayTest resultArrayTest = JSON.parseObject(jsonStr, ResultArrayTest.class);

System.out.println("code-->" + resultArrayTest.getCode());

System.out.println("data-->" + resultArrayTest.getData().get(1));

// Java对象 转 JSON字符串

String jsonString = JSON.toJSONString(resultArrayTest);

System.out.println("jsonString-->" + jsonString);

}

测试结果如下:

上面就是对JSON简单使用的讲解,有其他更好建议的小伙伴欢迎补充。

Java中使用fastJson的更多相关文章

  1. java中使用fastjson、jackson、json-lib解析JSON-------------------妈妈再也不用担心JSON解析

    1.fastjson引入包<dependency> <groupId>com.alibaba</groupId> <artifactId>fastjso ...

  2. Java中让fastJson识别Colloction和Map中的泛型类

    由于fastJson的高效性,最近采用fastJson来做序列化并存储数据,但出现了一个麻烦的问题,如果将Map<K,V>这样的类型序列化,反序列化就会不尽人意,有以下尝试: 使用JSON ...

  3. JAVA中使用alibaba fastjson实现JSONObject、Object、Json字符串的转换

    JAVA中使用alibaba fastjson实现JSONObject.Object.Json字符串的转换 Object转JSON字符串:String jsonStr = JSONObject.toJ ...

  4. java中的JSON数据转换方法fastjson

    1 maven工程引入fastjson <?xml version="1.0" encoding="UTF-8"?> <project xml ...

  5. Redis学习记录之Java中的初步使用

    1.关于Redis redis下载地址:<span style="font-family: Arial, Helvetica, sans-serif;">http:// ...

  6. Java中的Json序列化,不容忽视的getter

    在开发的过程中,经常会碰到和自己预期不一样的情况.有的时候自己去研究一下还是很有趣的.这两天在写java web的时候,碰到了一个对象序列化的问题. 问题重现 public class AjaxJso ...

  7. Java中net.sf.json包关于JSON与对象互转的问题

    在Web开发过程中离不开数据的交互,这就需要规定交互数据的相关格式,以便数据在客户端与服务器之间进行传递.数据的格式通常有2种:1.xml:2.JSON.通常来说都是使用JSON来传递数据.本文正是介 ...

  8. JSON(三)——java中对于JSON格式数据的解析之json-lib与jackson

    java中对于JSON格式数据的操作,主要是json格式字符串与JavaBean之间的相互转换.java中能够解析JSON格式数据的框架有很多,比如json-lib,jackson,阿里巴巴的fast ...

  9. Java中net.sf.json包关于JSON与对象互转的坑

    在Web开发过程中离不开数据的交互,这就需要规定交互数据的相关格式,以便数据在客户端与服务器之间进行传递.数据的格式通常有2种:1.xml:2.JSON.通常来说都是使用JSON来传递数据.本文正是介 ...

  10. Java 中 Gson的使用

    JSON 是一种文本形式的数据交换格式,它比XML更轻量.比二进制容易阅读和编写,调式也更加方便;解析和生成的方式很多,Java中最常用的类库有:JSON-Java.Gson.Jackson.Fast ...

随机推荐

  1. 2023年多校联训NOIP层测试6

    2023年多校联训NOIP层测试6 打了 \(10min\) 骗分,就溜了. T1 弹珠游戏 \(0pts\) 没听懂讲评,暂时咕了. T2 晚会 \(20pts\) 部分分( \(20pts\) ) ...

  2. NC19158 失衡天平

    题目链接 题目 题目描述 终于Alice走出了大魔王的陷阱,可是现在傻傻的她忘了带武器了,这可如何是好???这个时候,一个神秘老人走到她面前答应无偿给她武器,但老人有个条件,需要将所选武器分别放在天平 ...

  3. WebAssembly照亮了 Web端软件的未来

    WebAssembly的发展历程相对较短,但影响深远.WebAssembly 于 2015 年首次发布,先驱技术是来自Mozilla的asm.js和Google Native Client,最初的实现 ...

  4. STM32F401的PWM输出

    PWM的说明 PWM有三个关键指标: PWM频率, 占空比, 区分度 对于同一个时钟频率下工作的单片机, 区分度是和PWM工作频率相关的, 因为总频率是固定的, PWM工作频率越高, 留下给区分度的部 ...

  5. 【Unity3D】Bloom特效

    1 Bloom 特效原理 ​ Bloom 特效是指:将画面中较亮的区域向外扩散,造成一种朦脓的效果.实现 Bloom 特效,一般要经过 3 个阶段处理:亮区域检测.高斯模糊.Bloom 合成. ​ 本 ...

  6. win32编辑控件字体

    每次到用的时候就各种查资料,我这人记性又不好,遂记录下来: 普通的编辑控件: 创建:HWND hText = CreateWindowW(L"EDIT", L"enter ...

  7. 分层架构设计模式总结-MVC,洋葱架构,整洁架构,六边形架构,DDD等等

    一.单层结构不分层 最开始开发项目时,由于需求较少,用一个单独的工程文件就可以满足开发的需求了,不需要进行划分. 二.MVC 分层和三层 到后面需求越来越多,于是就把文件进行分解,怎么分解?有人提出了 ...

  8. SQL Server使用常见问题

    普通分页查询 三种方式: Top Not IN 方式:查询靠前的数据较快 ROW_NUMBER() OVER()方式:查询靠后的数据速度比上一种较快,在老版本的SQL Server中最常使用 offs ...

  9. 【LeetCode回溯算法#04】组合总和I与组合总和II(单层处理位置去重)

    组合总和 力扣题目链接(opens new window) 给定一个无重复元素的数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target ...

  10. 基于Python GDAL为长时间序列遥感图像绘制时相变化曲线图

      本文介绍基于Python中gdal模块,对大量多时相栅格图像,批量绘制像元时间序列折线图的方法.   首先,明确一下本文需要实现的需求:现有三个文件夹,其中第一个文件夹存放了某一研究区域原始的多时 ...