阿里巴巴FastJson包的使用心得

阿里巴巴FastJson包的使用心得

  • 1.FastJson简介
  • 2.FastJson特性
  • 3.引入FastJson
  • 4.FastJson中的一些对象
    • (1)JSONObject
    • (2)JSONArray
    • (3)SerializeWriter
  • 4.FastJson中的一些操作
    • (1) 将JavaBean序列化为格式化后的JSON文本
    • (2) 将对象转为非格式化的JSON文本
    • (3) JSON转JavaBean
    • (4)从json中获取属性
    • (5)json转换为List
    • (6)json转Map
    • (7)json转Set
    • (8)去除json对象中某个属性
    • (9)向JSON对象中添加属性
    • (10)修改Json对象中的属性
    • (11)判断JSON对象中是否存在某个属性
    • (12) Json中日期格式的处理

1.FastJson简介

  • Fastjson 是一个 Java 库,可以将 Java 对象转换为 JSON 格式,当然它也可以将 JSON 字符串转换为 Java 对象。
  • Fastjson 可以操作任何 Java 对象,即使是一些预先存在的没有源码的对象。

2.FastJson特性

  • 提供了 toJSONString() 和 parseObject() 方法来将 Java 对象与 JSON 相互转换。调用toJSONString方 法即可将对象转换成 JSON 字符串,parseObject 方法则反过来将 JSON
    字符串转换成对象。
  • 允许转换预先存在的无法修改的对象(只有class、无源代码)。
  • Java泛型的广泛支持。
  • 允许对象的自定义表示、允许自定义序列化类。
  • 支持任意复杂对象(具有深厚的继承层次和广泛使用的泛型类型)。

3.引入FastJson

	<dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.2.83</version></dependency>

4.FastJson中的一些对象

(1)JSONObject

JSONObject相当于Map<String,Object>,例如:

		String jsonText = "{\n" +"\t\"field1\":\"1\",\n" +"\t\"field2\":\"2\"\n" +"}";JSONObject jsonObject = JSONObject.parseObject(jsonText);System.out.println(jsonObject.get("field1"));

输出结果:
在这里插入图片描述

(2)JSONArray

JSONArray 相当于 List < Object >,例如:

String jsonText = "[{\"field1\":\"1\",\"field2\":\"2\"},{\"field1\":\"3\",\"field2\":\"3\"}]";
JSONArray jsonArray = JSONObject.parseArray(jsonText);
for (Object o : jsonArray) {System.out.println(o);
}

输出结果:
在这里插入图片描述

(3)SerializeWriter

SerializeWriter 相当于 StringBuffer,例如:

		SerializeWriter serializeWriter = new SerializeWriter();serializeWriter.append("[");serializeWriter.append("{");serializeWriter.append("'field1':'1','field2':2");serializeWriter.append("}");serializeWriter.append("]");String jsonText = serializeWriter.toString();System.out.println(jsonText);

输出结果:
在这里插入图片描述

4.FastJson中的一些操作

创建一个内部类用来测试

static class TestObject{private String field1;private String field2;public String getField1() {return field1;}public void setField1(String field1) {this.field1 = field1;}public String getField2() {return field2;}public void setField2(String field2) {this.field2 = field2;}public TestObject() {}public TestObject(String field1, String field2) {this.field1 = field1;this.field2 = field2;}@Overridepublic String toString() {return "TestObject{" +"field1='" + field1 + '\'' +", field2='" + field2 + '\'' +'}';}
}

(1) 将JavaBean序列化为格式化后的JSON文本

TestObject testObject = new TestObject("1","2");
String jsonString = JSONObject.toJSONString(testObject, true);
System.out.println(jsonString);

输出结果:
在这里插入图片描述

(2) 将对象转为非格式化的JSON文本

List<TestObject> list = Arrays.asList(new TestObject("1", "2"), new TestObject("3", "3"));
String jsonString = JSONObject.toJSONString(list, false);
System.out.println(jsonString);

输出结果:
在这里插入图片描述

(3) JSON转JavaBean

String jsonText = "{\n" +"\t\"field1\":\"1\",\n" +"\t\"field2\":\"2\"\n" +"}";
TestObject testObject = JSONObject.parseObject(jsonText, TestObject.class);
System.out.println(testObject);

输出结果:
在这里插入图片描述

(4)从json中获取属性

String jsonText = "{\n" +"\t\"field1\":\"1\",\n" +"\t\"field2\":\"2\"\n" +"}";
JSONObject jsonObject = JSONObject.parseObject(jsonText);
String field1 = String.valueOf(jsonObject.get("field1"));
System.out.println(field1);

输出结果:
在这里插入图片描述

(5)json转换为List

String jsonText = "[{\"field1\":\"1\",\"field2\":\"2\"},{\"field1\":\"3\",\"field2\":\"3\"}]";List<TestObject> arrayLists = JSONObject.parseArray(jsonText, TestObject.class);for (TestObject testObject : arrayLists) {System.out.println(testObject);}

输出结果:
在这里插入图片描述

(6)json转Map

String jsonText = "{\n" +"\t\"fieldName1\":\"1\",\n" +"\t\"fieldName2\":\"2\"\n" +"}";
Map<String,Object> map = JSONObject.parseObject(jsonText, HashMap.class);
System.out.println(map);

输出结果:
在这里插入图片描述

(7)json转Set

String jsonText = "[1,2,3,1]";
Set<String> set = JSONObject.parseObject(jsonText, HashSet.class);
System.out.println(set);

输出结果:
在这里插入图片描述

(8)去除json对象中某个属性

String jsonText = "{\n" +"\t\"fieldName1\":\"1\",\n" +"\t\"fieldName2\":\"2\"\n" +"}";
JSONObject jsonObject = JSONObject.parseObject(jsonText);
Set<String> keys = jsonObject.keySet();
keys.remove("fieldName1");
System.out.println(jsonObject);

输出结果:
在这里插入图片描述

(9)向JSON对象中添加属性

String jsonText = "{\n" +"\t\"fieldName1\":\"1\",\n" +"\t\"fieldName2\":\"2\"\n" +"}";
JSONObject jsonObject = JSONObject.parseObject(jsonText);
jsonObject.put("fieldName3","3");
System.out.println(jsonObject);

输出结果:
在这里插入图片描述

(10)修改Json对象中的属性

String jsonText = "{\n" +"\t\"fieldName1\":\"1\",\n" +"\t\"fieldName2\":\"2\"\n" +"}";
JSONObject jsonObject = JSONObject.parseObject(jsonText);
jsonObject.put("fieldName2","22");
System.out.println(jsonObject);

输出结果:
在这里插入图片描述

(11)判断JSON对象中是否存在某个属性

String jsonText = "{\n" +"\t\"fieldName1\":\"1\",\n" +"\t\"fieldName2\":\"2\"\n" +"}";
JSONObject jsonObject = JSONObject.parseObject(jsonText);
boolean result = jsonObject.containsKey("fieldName1");
System.out.println(result);

输出结果:
在这里插入图片描述

(12) Json中日期格式的处理

Date date = new Date();
String jsonStringWithDateFormat = JSON.toJSONStringWithDateFormat(date, "yyyy-MM-dd HH:mm:ss");
System.out.println(jsonStringWithDateFormat);

输出结果:
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/86541.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

微服务(rpc)

微服务&#xff08;rpc&#xff09; 微服务必备的模块生产者消费者管理平台流量控制集群情况下如何做到流量监控 负载均衡服务发现和治理序列化传输序列化和反序列化 微服务是一种架构风格&#xff0c;将一个应用程序拆分为一组小型、独立的服务&#xff0c;每个服务都可以独立…

猫头虎博主赠书一期:《Kubernetes原生微服务开发》

&#x1f337;&#x1f341; 博主猫头虎 带您 Go to New World.✨&#x1f341; &#x1f984; 博客首页——猫头虎的博客&#x1f390; &#x1f433;《面试题大全专栏》 文章图文并茂&#x1f995;生动形象&#x1f996;简单易学&#xff01;欢迎大家来踩踩~&#x1f33a; &a…

【微服务】02-集成事件与MediatR

文章目录 1.集成事件1.1 定义1.2 集成事件工作原理1.3 总结 2.使用RabbitMQ来实现EventBus2.1 RabbitMQ安装2.2 CAP框架实现RabbitMQ2.2.1 CAP框架实现架构2.2.2 CAP框架实现原理 3.MediatR3.1 使用Mediator实现命令查询职责分离模式(CQRS)3.1.1 核心对象 3.2 处理领域事件3.2.…

matlab 点云的二进制形状描述子

目录 一、功能概述1、算法概述2、主要函数3、参考文献二、代码示例三、结果展示四、参数解析输入参数名称-值对应参数输出参数五、参考链接本文由CSDN点云侠原创,

linux+QT+FFmpeg 6.0,把多个QImage组合成一个视频

直接上代码吧: RecordingThread.h#ifndef RECORDINGTHREAD_H #define RECORDINGTHREAD_H #include "QTimer" #include <QObject> #include <QImage> #include <QQueue>extern "C"{//因为FFmpeg是c语言,QT里面调用的话需要extern "C…

【【萌新的STM32学习-16中断的基本介绍1】】

萌新的STM32学习-16中断的基本介绍1 中断 什么是中断 中断是打断CPU执行正常的程序&#xff0c;转而处理紧急程序&#xff0c;然后返回原暂停的程序继续执行&#xff0c;就叫中断 中断的作用 实时控制 &#xff1a; 就像对温度进行控制 故障控制 &#xff1a; 第一时间对突发情…

ICS PA1

ICS PA1 init.shmake 编译加速ISA计算机是个状态机程序是个状态机准备第一个客户程序parse_argsinit_randinit_loginit_meminit_isa load_img剩余的初始化工作运行第一个客户程序调试&#xff1a;零断点TUI 基础设施单步执行打印寄存器状态扫描内存 表达式求值词法分析递归求值…

指针C语言

1指针方式 1.int a,*p&a; 2. int a;int *p&a;特点&#xff1a; 1.指针变量与类型无关&#xff0c;在TC占2字节&#xff0c;在VC下占四字节 2.指针变量的引用 1.直接引用 2.间接引用 注意*的运算对象必须为地址 *p1; //相当于取p指针指向的值然后&#xff0b;1 int …

Zabbix下载安装及SNMP Get使用

帮助文档&#xff1a;6. Zabbix Appliance 一、zabbix下载安装 1、获取Zabbix Appliance镜像 Download Zabbix appliance 2、使用该镜像创建虚拟机 3、打开虚拟机控制台自动安装&#xff0c;等待安装完成即可 默认配置 系统/数据库&#xff1a;root:zabbix Zabbix 前端&am…

django的简易的图书管理系统jsp书店进销存源代码MySQL

本项目为前几天收费帮学妹做的一个项目&#xff0c;Java EE JSP项目&#xff0c;在工作环境中基本使用不到&#xff0c;但是很多学校把这个当作编程入门的项目来做&#xff0c;故分享出本项目供初学者参考。 一、项目描述 django的简易的图书管理系统 系统有1权限&#xff1a…

STM32移植ST77891.69寸屏幕并移植lvgl8.0.2(按键输入设备)一些心得

学习目标: 将ST7789(1.69寸圆角屏SPI)驱动移植+lvgl移植+按键当作输入设备 学习内容: 驱动移植lvgl移植按键移植软件使用正片开始: 先说说这块屏幕的介绍呗 ST7789屏幕是一种高性能的液晶显示屏,它具有高清晰度、高亮度、低功耗等优点。它采用了SPI接口通信,可以实现快速…

无涯教程-聚类算法 - K-Means

K-均值聚类算法计算质心并进行迭代&#xff0c;直到找到最佳质心为止&#xff0c;它假定群集的数目是已知的&#xff0c;它也称为扁平聚类算法。通过算法从数据中识别出的簇数以K均值中的" K"表示。 在该算法中&#xff0c;将数据点分配给群集&#xff0c;以使数据点…