阿里巴巴FastJson包的使用心得

news2024/11/25 0:16:40

阿里巴巴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;
        }

        @Override
        public 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.coloradmin.cn/o/942531.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

配置uniapp调试环境

目录 uni-app介绍 uni-app开发工具HBuilderX 创建项目前提条件 uni-app项目结构 配置mumu模拟器 uni-app生命周期 1.应用生命周期 小程序规范 2.页面生命周期-小程序规范 3.组件生命周期 vue规范 uni-app登录按钮方法 uni-app发布安卓app uni-app介绍 uni-app 是一个…

深入理解ArrayList的动态扩容机制及应用

在java编程中&#xff0c;数据结构起着至关重要的作用&#xff0c;而ArrayList作为一种常用的动态数组&#xff0c;为我们在处理数据时提供了便利。其中&#xff0c;其独特的动态扩容机制更是为其赢得了广泛的应用。我们不管在工作还是面试中&#xff0c;都会遇到ArrayList&…

Docker拉取RocketMQ及可视化界面

本文介绍Docker拉取RocketMQ及可视化界面操作步骤 Linux下安装Docker请参考&#xff1a;Linux安装Docker 文章目录 安装namesrv创建挂载目录授权相关权限拉取镜像运行容器查看运行情况 安装Broker创建挂载目录及配置文件目录授权相关权限创建配置文件运行容器查看运行情况 安装…

网络编程套接字(3): 简单的TCP网络程序

文章目录 网络编程套接字(3)4. 简单的TCP网络程序4.1 服务端创建(1) 创建套接字(2) 绑定端口(3) 监听(4) 获取新连接(5) 处理读取与写入 4.2 客户端创建(1)连接服务器 4.3 代码编写(1) v1__简单发送消息(2) v2_多进程版本(3) v3_多线程版本(4) v4_线程池版本 网络编程套接字(3)…

博客系统后端(项目系列2)

目录 前言 &#xff1a; 1.准备工作 1.1创建项目 1.2引入依赖 1.3创建必要的目录 2.数据库设计 2.1博客数据 2.2用户数据 3.封装数据库 3.1封装数据库的连接操作 3.2创建两个表对应的实体类 3.3封装一些必要的增删改查操作 4.前后端交互逻辑的实现 4.1博客列表页 …

中国建筑出版传媒许少辉博士八一新书乡村振兴战略下传统村落文化旅游设计日京东当当畅销榜自由营九三学

中国建筑出版传媒许少辉博士八一新书乡村振兴战略下传统村落文化旅游设计日京东当当畅销榜自由营九三学

大数据Flink(六十九):SQL 数据类型

文章目录 SQL 数据类型 一、原子数据类型 二、​​​​​​复合数据类型 SQL 数据类型 在介绍完一些基本概念之后,我们来认识一下

二级MySQL(二)——编程语言,函数

SQL语言又称为【结构化查询语言】 请使用FLOOR&#xff08;x&#xff09;函数求小于或等于5.6的最大整数 请使用TRUNCATE&#xff08;x&#xff0c;y&#xff09;函数将数字1.98752895保留到小数点后4位 请使用UPPER&#xff08;&#xff09;函数将字符串‘welcome’转化为大写…

SOLIDWORKS工程图转DWG图层映射技巧

DWG格式的图纸在工程制图中有着非常重要的地位&#xff0c;工程实践中常常就需要将SOLIDWORKS工程图进行转换。对于两者之间数据衔接的妥善处理&#xff0c;是提升工作效率的有效手段。基于此目的&#xff0c;本次我们将介绍数据衔接的一个有效解决方案&#xff1a;图层数据的映…

中国建筑出版传媒许少辉八一新书乡村振兴战略下传统村落文化旅游设计日

中国建筑出版传媒许少辉八一新书乡村振兴战略下传统村落文化旅游设计日

Jmeter(二十九):Jmeter常用场景梳理

一、每秒钟固定调用次数 如果想控制每秒发送请求数量,仅仅通过线程数与循环次数是不够的,因为这只能控制发送总数,而要控制每秒发送数量,需要线程数与常数吞吐量控制器的搭配使用,这种场景在性能测试中使用不多。 例如每秒钟调用30次接口,那么把线程数设置为30,将常数…

c# modbus CRC计算器(查表法)

一、简介&#xff1a; 本案例为crc计算器&#xff0c;通过查表法计算出结果 1.窗体后台源代码 using Crc; using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text…

Matlab图像处理-除法运算

除法运算 除法运算可用于去除数字化器灵敏度随空间变化造成的影响。图像的除法运算给出的是两幅图像相应像素值的变化比率&#xff0c;而不是每个像素的绝对差异&#xff0c;因而图像除法也称为比率变换&#xff0c;常用于校正成像设备的非线性影响。 在 MATLAB图像处理工具箱…

IDEA集成Git相关操作知识(pull、push、clone)

一&#xff1a;集成git 1&#xff1a;初始化git&#xff08;新版本默认初始化&#xff09; 老版本若没有&#xff0c;点击VCS&#xff0c;选中import into Version Controller中的Create git Repository(创建git仓库)&#xff0c;同理即可出现git符号。 也可查看源文件夹有没有…

IT和OT:如何弥合差距?

两则企业故事 我们曾经碰到一家食品工厂由于订单数据转换不正确&#xff0c;导致加载的产品不正确&#xff0c;将错误的液体装满了卡车。因为IT和OT不能很好地协同工作。因此&#xff0c;它必须被抽回去&#xff0c;导致大量的时间和金钱损失。将新的业务系统集成到整个IT环境…

Java并发编程第6讲——线程池(万字详解)

Java中的线程池是运用场景最多的并发框架&#xff0c;几乎所有需要异步或并发执行任务的程序都可以使用线程池&#xff0c;本篇文章就详细介绍一下。 一、什么是线程池 定义&#xff1a;线程池是一种用于管理和重用线程的技术&#xff08;池化技术&#xff09;&#xff0c;它主…

Python学习之二 变量与简单数据类型

(一) 变量 在学习之一 中&#xff0c;我们直接将一些数进行运算&#xff0c;在实际编程过程中&#xff0c;我们往往使用变量来保存一些内容。变量的命名需要遵循标识符的命名规则&#xff0c;只能包括字母、数字和_&#xff0c;并且必须以字母或_开始。强烈建议Python PEP8 编…

vulnhub Seattle-0.0.3

环境&#xff1a;vuluhub Seattle-0.0.3 1.catelogue处任意文件下载(目录穿越) http://192.168.85.139/download.php?item../../../../../../etc/passwd 有个admin目录&#xff0c;可以下载里面的文件进行读取 2.cltohes详情页面处(参数prod)存在sql报错注入 http://192.16…

三、Nginx 安装集

一、Nginx CentOS Yum 安装 1. 前置准备 # 默认情况 CentOS-7 中没有 Nginx 的源 # Nginx 官方提供了源&#xff0c;所以执行如下命令添加源 rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm2. 安装 # 安装 yum insta…

ISO 22737-2021预定轨迹低速自动驾驶系统-系统要求、性能要求和性能测试规范(中文全文版)

简介 自动驾驶系统的发展导致了人员、货物和服务运输方式的转变。其中一种新的运输方式是低速自动驾驶(LSAD)系统,它在预定的路线上运行。LSAD系统将被用于最后一英里的运输、商业区的运输、商业或大学校园区以及其他低速环境的应用。 由LSAD系统驾驶的车辆(可以包括与基…