Fastjson 的使用总结

news/2025/3/15 0:58:48/

一.JSON 介绍

JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。 易于人阅读和编写。同时也易于机器解析和生成。

JSON建构于两种结构:

  • “名称/值”对的集合(A collection of name/value pairs)。不同的语言中,它被理解为对象(object),纪录(record),结构(struct),字典(dictionary),哈希表(hash table),有键列表(keyed list),或者关联数组 (associative array)。
  • 值的有序列表(An ordered list of values)。在大部分语言中,它被理解为数组(array)

二.Fastjson 简介

Fastjson是阿里巴巴的开源JSON解析库,基于Java语言,支持JSON格式的字符串与JavaBean之间的相互转换。

fastjson 常用 API

fastjson API 入口类是com.alibaba.fastjson.JSON,常用的序列化操作都可以在JSON类上的静态方法直接完成。

public static final Object parse(String text); // 把JSON文本parse为JSONObject或者JSONArray 
public static final JSONObject parseObject(String text); // 把JSON文本parse成JSONObject    
public static final <T> T parseObject(String text, Class<T> clazz); // 把JSON文本parse为JavaBean 
public static final JSONArray parseArray(String text); // 把JSON文本parse成JSONArray 
public static final <T> List<T> parseArray(String text, Class<T> clazz); //把JSON文本parse成JavaBean集合 
public static final String toJSONString(Object object); // 将JavaBean序列化为JSON文本 
public static final String toJSONString(Object object, boolean prettyFormat); // 将JavaBean序列化为带格式的JSON文本 
public static final Object toJSON(Object javaObject); //将JavaBean转换为JSONObject或者JSONArray。

有关类库的一些说明

  • JSONArray : 相当于List
  • JSONObject: 相当于Map<String,Object>

JSONObject是JSON字符串与pojo对象转换过程中的中间表达类型,实现了Map接口,可以看做是一个模拟JSON对象键值对再加上多层嵌套的数据集合,对象的每一个基本类型属性是map里的一个key-value,一个非基本类型属性是一个嵌套的JSONObject对象(key是属性名称,value是表示这个属性值的对象的JSONObject)。如果以前用过apache beanutils里的DynamicBean之类的,就知道JSONObject也是一种动态描述Bean的实现,相当于是拆解了Bean本身的结构与数据。这时候由于JSONObject里可能会没有记录全部的Bean类型数据,例如泛型的具体子类型之类的元数据,如果JSONObject与正常的POJO混用,出现问题的概率较高。

JSON、JSONObject、JSONArray、javabean关系的解析:

首先JSON、JSONObject、JSONArray是属于FastJson框架的类,它们就是普通的类只不过在FastJson框架赋予了它们对json格式字符的处理能力。

JSON:fastJson的解析器,用于JSON格式字符串与JSON对象及javaBean之间的转换。

JSONObject:fastJson提供处理对象样子的json字符的类。

JSONArray:fastJson提供处理数组样子的json字符的类。

当然你也可以不用JSONObject、JSONArray,直接将json字符串转换为能匹配上的javabean。如果你没有能匹配的那你就考虑转换为JSONObject、JSONArray,因为JSONObject、JSONArray也可以对属性进行操作。

JSON就是一串字符串 只不过元素会使用特定的符号标注。

{} 双括号表示对象;   [] 中括号表示数组

由于JSONObject和JSONArray继承了JSON,所以也可以直接使用两者对JSON格式字符串与JSON对象及javaBean之间做转换,不过为了避免混淆下面方法都使用JSON。

1.json字符 转换为 JSONObject

  JSONObject jsonObject = JSON.parseObject("对象样子的json字符");

 JSONObject jsonObject = JSONObject.fromObject("对象样子的json字符");

  String jsonStr1 = "{\"password\":\"12345\",\"username\":\"dmego\"}";User user = JSON.parseObject(jsonStr1, User.class);System.out.println("json字符串转简单java对象:"+user.toString());

2.json字符 转换为 JSONArray

JSONArray jsonArray = JSON.parseArray("数组样子的json字符"); 

JSONArray jsonArray = JSONArray .fromObject("数组样子的json字符");  
 

/** json字符串转List<Object>对象* 字符串:[{"password":"123123","username":"zhangsan"},{"password":"321321","username":"lisi"}]*/String jsonStr2 = "[{'password':'123123','username':'zhangsan'},{'password':'321321','username':'lisi'}]";List<User> users = JSON.parseArray(jsonStr2, User.class);System.out.println(users.toString());JSON.parseArray(jsonStr2);

JSON最佳实践

https://juejin.cn/post/6844903605279932423#heading-1


http://www.ppmy.cn/news/68493.html

相关文章

【FMC136】AD9467之4通道 250MSPS 采样率16位AD 采集子卡模块得设计原理图中文资料

板卡概述 FMC136 是一款4 通道250MHz 采样率16 位AD 采集FMC子卡&#xff0c;符合VITA57 规范&#xff0c;可以作为一个理想的IO 模块耦合至FPGA前端&#xff0c;4 通道AD 通过高带宽的FMC 连接器&#xff08;HPC&#xff09;连接至FPGA 从 而大大降低了系统信号延迟。该板卡支…

使用 @Autowired 依赖注入时警告不建议使用字段注入

文章目录 字段注入缺点无法注入 final 字段与 Spring 容器耦合度高 构造器注入&#xff08;Spring 官方推荐&#xff09;Setter 方法注入 在 Spring 中注入依赖时有字段注入、构造器注入、Setter 方法注入三种注入方式。 字段注入缺点 无法注入 final 字段 在 Spring 2.5 中引…

算法修炼之练气篇——练气七层

博主&#xff1a;命运之光 专栏&#xff1a;算法修炼之练气篇 前言&#xff1a;每天练习五道题&#xff0c;炼气篇大概会练习200道题左右&#xff0c;题目有C语言网上的题&#xff0c;也有洛谷上面的题&#xff0c;题目简单适合新手入门。&#xff08;代码都是命运之光自己写的…

Git常用操作:基础命令、生成公钥、webhook同步

这里写目录标题 下载安装GIT基础命令克隆初始化与仓库建立连接下拉代码提交代码清空本地缓存 本地生成GIT公钥webhook&#xff08;本地-码云-服务器代码同步&#xff09; 下载安装GIT 此处只介绍windows系统下的安装&#xff0c;linux一般都是自带git&#xff08;自行百度&…

Windows下git和github的使用

介绍windows下的git和GitHub使用。 一、注册gihub账号 github官网&#xff1a;https://github.com 自行创建即可。 登录&#xff0c;create repository新建仓库一个测试库readme&#xff0c;创建完成。 二、git的安装 git官方网站&#xff1a;https://git-scm.com/ 选择Wi…

UNIAPP实战项目笔记70 购物车删除商品的前后端交互

UNIAPP实战项目笔记70 购物车删除商品的前后端交互 思路 需要用到vuex 传id值到后端,删除指定id购物车数据 案例截图 购物车商品编辑页面 代码 后端代码 index.js var express require(express); var router express.Router(); var connection require(../db/sql.js); va…

python进阶--月考三

python进阶--月考三 &#xff08;一&#xff09;装饰器&#xff08;二&#xff09;创建名为express.py文件&#xff0c;编写以下推导式&#xff08;三&#xff09;创建一个process_study.py 编写一个多进程程序&#xff08;四&#xff09;创建一个thread_study.py 编写一个多线…

代码随想录算法训练营第二十三天|669. 修剪二叉搜索树、108.将有序数组转换为二叉搜索树、538.把二叉搜索树转换为累加树

目录 669. 修剪二叉搜索树 108.将有序数组转换为二叉搜索树 538.把二叉搜索树转换为累加树 669. 修剪二叉搜索树 这道题目比较难&#xff0c;比 添加增加和删除节点难的多&#xff0c;建议先看视频理解。 题目链接/文章讲解&#xff1a; 代码随想录 题解思路&#xff1a; 多…