首页 > 编程语言 >Java中使用fastJson

Java中使用fastJson

时间:2024-03-23 12:11:59浏览次数:28  
标签:fastJson Java -- flag System JSON 使用 字符串

 

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简单使用的讲解,有其他更好建议的小伙伴欢迎补充。

 

标签:fastJson,Java,--,flag,System,JSON,使用,字符串
From: https://www.cnblogs.com/yilangcode/p/18090952

相关文章

  • 一篇搞定ECharts的基本使用,赶快收藏起来学习吧~
    准备工作引入声明一个有宽高的dDOM元素echarts.init(DOM)option配置对象echarts.setOptions(option)基础配置option类似于一个容器,那么里面的属性就相当于组件:xAxis(直角坐标系X轴)、yAxis(直角坐标系Y轴)、grid(直角坐标系底板)、angleAxis(极坐标系角度轴)、radiusAxi......
  • 【React】使用 JSX 为 JavaScript 添加标签
    使用JSX为JavaScript添加标签实际上是将JSX语法与JavaScript代码结合使用,以描述用户界面。JSX允许你在JavaScript中编写类似HTML的结构,并最终由React库将其转换为真正的DOM元素。以下是将标签引入JavaScript以及将HTML转化为JSX的步骤和JSX的一些基本......
  • 是时候来唠一唠synchronized关键字了,Java多线程的必问考点!
    写在开头在之前的博文中,我们介绍了volatile关键字,Java中的锁以及锁的分类,今天我们花5分钟时间,一起学习一下另一个关键字:synchronized。synchronized是什么?首先synchronized是Java中的一个关键字,所谓关键字,就是Java中根据底层封装所赋予的一种具有特殊语义的单词,而synchronized......
  • iptables-save 命令使用总结
    转载请注明出处:iptables-save 命令在Linux系统中用于将当前运行的 iptables 防火墙规则导出到一个文件中。这对于备份规则、迁移规则或在不同系统间共享规则配置非常有用。基本用法基本用法是将当前的 iptables 规则保存到文件中,如下所示:iptables-save>/pat......
  • Java学习笔记:ArrayList集合
    目录为什么要有集合:解决数组自动扩容的问题Java、python数据类型对比Java支持的数据类型主要分为两大类:Python支持多种数据类型,主要包括以下几种:在Java中常见的数据类型实现方式:Java通过使用集合框架来解决一组数据的存储和管理Java集合大致也可分成List、Set、Queue、Map四种接口......
  • Java随机读写文件
    目录1. 构造方法2.文件指针3.读写操作4.应用示例       文件输入输出流类(FileInputStream和FileOutputStream)实现了对磁盘文件的顺序读写,然而在实际的应用中,经常需要在文件的任意位置读或写数据,并且要求同时进行读和写操作。为此,Java还提供了一个功能更强大、......
  • java数据结构与算法基础-----排序------堆排序
    java数据结构与算法刷题目录(剑指Offer、LeetCode、ACM)-----主目录-----持续更新(进不去说明我没写完):https://blog.csdn.net/grd_java/article/details/123063846文章目录堆排序是利用堆(数据结构)设计的排序算法,属于选择排序,最坏,最好,平均时间复杂度均为O(nlogn),不稳......
  • 利用termux和qemu虚拟机使用docker
    操作前提由于大部分手机的内核并不满足使用docker的要求,因此需要用root权限修改手机部分kernel来满足,但是手机root并不适用所有手机,而且root也有一定的风险,因此使用termux终端来通过qemu虚拟机进行容器化操作可以实现满足docker运行的要求。操作步骤安装termux或者zerotermux......
  • (Java)猛刷LeetCode——数组知识点篇
    数组Array在连续的内存空间中,存储一组相同类型的元素元素:值索引:数组的下标数组访问(Access)和数组搜索(Search)●数组访问:索引●数组搜索:找2这个元素数组中有没有以下是数组的常规操作:数组创建、添加元素、访问元素、修改元素、删除元素、遍历数组、查找元素、数组......
  • 鸿蒙开发,使用http返回的响应数据无法正常获取 ,利用hilog打印日志一直结果是object或者
    项目场景:这里简述项目相关背景:前后端分离项目,使用鸿蒙做前端,后端SpringBoot写好接口(通过商品分类id查询商品列表),鸿蒙前端页面使用Tabs组件导航,展示商品分类,点击分类标签,查询后端接口,返回对应分类商品列表数据项目场景:鸿蒙开发,使用http返回的响应数据无法正常获取,利用hilo......