Java操作JSON数据(3)--fastjson操作JSON数据
fastjson是阿里巴巴的开源JSON解析库,它可以解析JSON格式的字符串,支持将Java Bean序列化为JSON字符串,也可以从JSON字符串反序列化到JavaBean。本文介绍下fastjson的基本使用方法,包括序列化和反序列化;文中所使用到的软件版本:Java 1.8.0_191、fastjson1.2.62。
1、引入依赖
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.62</version>
</dependency>
2、序列化
public static String serialize() {
MyBean bean = new MyBean();
bean.setS("测试字符串");
Calendar calendar = Calendar.getInstance();
calendar.add(Calendar.HOUR_OF_DAY, -1);
bean.setD(calendar.getTime());
List<MyBean> list = new ArrayList<MyBean>();
list.add(bean);
Map<String, List<MyBean>> map = new HashMap<String, List<MyBean>>();
map.put("data", list);
/*
* "yyyy-MM-dd HH:mm:ss" 设置日期格式,也可在类属性上使用@JSONField(format="yyyy-MM-dd HH:mm:ss")注解来设置
* SerializerFeature.WriteMapNullValue 输出值为null的字段
* SerializerFeature.WriteNullStringAsEmpty 字符串如果为null则输出""
*/
String result = JSON.toJSONStringWithDateFormat(map, "yyyy-MM-dd HH:mm:ss", SerializerFeature.WriteMapNullValue, SerializerFeature.WriteNullStringAsEmpty);
System.out.println(result);
return result;
}
3、反序列化
public static void deserialize() {
String s = serialize();
TypeReference<Map<String, List<MyBean>>> type = new TypeReference<Map<String, List<MyBean>>>(){};
Map<String, List<MyBean>> map = JSON.parseObject(s, type);
System.out.println(map);
//直接通过api获取相应数据
JSONObject jsonObject = JSON.parseObject(s);
JSONArray JsonArray = jsonObject.getJSONArray("data");
JSONObject bean = JsonArray.getJSONObject(0);
System.out.println(bean.getString("s"));
//...
}
4、完整例子
package com.inspur.demo.json; import java.util.ArrayList;
import java.util.Calendar;
import java.util.HashMap;
import java.util.List;
import java.util.Map; import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.TypeReference;
import com.alibaba.fastjson.serializer.SerializerFeature; /**
* fastjson操作JSON数据
*/
public class FastjsonCase {
/**
* 序列化
*/
public static String serialize() {
MyBean bean = new MyBean();
bean.setS("测试字符串");
Calendar calendar = Calendar.getInstance();
calendar.add(Calendar.HOUR_OF_DAY, -1);
bean.setD(calendar.getTime()); List<MyBean> list = new ArrayList<MyBean>();
list.add(bean);
Map<String, List<MyBean>> map = new HashMap<String, List<MyBean>>();
map.put("data", list); /*
* "yyyy-MM-dd HH:mm:ss" 设置日期格式,也可在类属性上使用@JSONField(format="yyyy-MM-dd HH:mm:ss")注解来设置
* SerializerFeature.WriteMapNullValue 输出值为null的字段
* SerializerFeature.WriteNullStringAsEmpty 字符串如果为null则输出""
*/
String result = JSON.toJSONStringWithDateFormat(map, "yyyy-MM-dd HH:mm:ss", SerializerFeature.WriteMapNullValue, SerializerFeature.WriteNullStringAsEmpty);
System.out.println(result);
return result;
} /**
* 反序列化
*/
public static void deserialize() {
String s = serialize();
TypeReference<Map<String, List<MyBean>>> type = new TypeReference<Map<String, List<MyBean>>>(){};
Map<String, List<MyBean>> map = JSON.parseObject(s, type);
System.out.println(map); //直接通过api获取相应数据
JSONObject jsonObject = JSON.parseObject(s);
JSONArray JsonArray = jsonObject.getJSONArray("data");
JSONObject bean = JsonArray.getJSONObject(0);
System.out.println(bean.getString("s"));
//...
} public static void main(String[] args) {
serialize();
deserialize();
} }
FastjsonCase
package com.inspur.demo.json; import java.util.Arrays;
import java.util.Date; public class MyBean {
private String s = "字符串";
private String s2;
private String s3 = "字符串3";
private int i = 123;
private Integer i2;
private char c = '到';
private char[] c2 = new char[]{'a', 'b'};
private Date d = new Date();
private Date[] d2 = new Date[]{new Date(), new Date()};
public String getS() {
return s;
}
public void setS(String s) {
this.s = s;
}
public String getS2() {
return s2;
}
public void setS2(String s2) {
this.s2 = s2;
}
public String getS3() {
return s3;
}
public void setS3(String s3) {
this.s3 = s3;
}
public int getI() {
return i;
}
public void setI(int i) {
this.i = i;
}
public Integer getI2() {
return i2;
}
public void setI2(Integer i2) {
this.i2 = i2;
}
public char getC() {
return c;
}
public void setC(char c) {
this.c = c;
}
public char[] getC2() {
return c2;
}
public void setC2(char[] c2) {
this.c2 = c2;
}
public Date getD() {
return d;
}
public void setD(Date d) {
this.d = d;
}
public Date[] getD2() {
return d2;
}
public void setD2(Date[] d2) {
this.d2 = d2;
}
@Override
public String toString() {
return "MyBean [s=" + s + ", s2=" + s2 + ", s3=" + s3 + ", i=" + i + ", i2=" + i2 + ", c=" + c + ", c2="
+ Arrays.toString(c2) + ", d=" + d + ", d2=" + Arrays.toString(d2) + "]";
}
}
MyBean
Java操作JSON数据(3)--fastjson操作JSON数据的更多相关文章
- Java基础/利用fastjson反序列化json为对象和对象数组
利用fastjson反序列化json为对象和对象数组 利用 fastjosn 将 .json文件 反序列化为 java.class 和 java.util.List fastjson 是一个性能很好的 ...
- Java操作JSON数据(1)--JSON-lib操作JSON数据
JSON-lib是一个java库,用于将bean.映射.集合.java数组和XML转换为JSON,或将JSON转为beans和DynaBeans.JSON-lib最后的版本是2.4,更新时间是2010 ...
- Spark使用Java、Scala 读取mysql、json、csv数据以及写入操作
Spark使用Java读取mysql数据和保存数据到mysql 一.pom.xml 二.spark代码 2.1 Java方式 2.2 Scala方式 三.写入数据到mysql中 四.DataFrame ...
- json小结和fastjson包的实际json操作
工作中,需要处理与另一方系统数据交换的问题,采用的是调用远程接口的方法,数据格式选择的是json,今天就来聊一聊json,主要分析json数据和java Bean之间的转换问题. 一.json是什么 ...
- Python常用的数据文件存储的4种格式(txt/json/csv/excel)及操作Excel相关的第三方库(xlrd/xlwt/pandas/openpyxl)(2021最新版)
序言:保存数据的方式各种各样,最简单的方式是直接保存为文本文件,如TXT.JSON.CSV等,除此之外Excel也是现在比较流行的存储格式,通过这篇文章你也将掌握通过一些第三方库(xlrd/xlwt/ ...
- fastjson对json操作
fastjson对json字符串JSONObject和JSONArray互相转换操作示例 fastjson的方法: Fastjson API入口类是com.alibaba.fastjson.JSON ...
- java封装 redis 操作 对象,list集合 ,json串
/** * 功能说明: * 功能作者: * 创建日期: * 版权归属:每特教育|蚂蚁课堂所有 www.itmayiedu.com */package com.redis.service; import ...
- java分享第十三天(fastjson生成和解析json数据,序列化和反序列化数据)
fastjson简介:Fastjson是一个Java语言编写的高性能功能完善的JSON库.fastjson采用独创的算法,将parse的速度提升到极致,超过所有json库,包括曾经号称最快的jack ...
- java中的JSON数据转换方法fastjson
1 maven工程引入fastjson <?xml version="1.0" encoding="UTF-8"?> <project xml ...
随机推荐
- linux学习15 Linux系统用户和组全面讲解
一.用户,组和权限管理 1.多用户(Multi-tasks),多任务(Multi-Users).对计算机而言,每一个使用者就是一个用户. 2.每个使用者: a.用户标识,密码: 认证(Authenti ...
- linux命令之------rm命令
rm命令 1) 作用:用于删除一个文件或者目录: 2) -i:删除前逐一询问确认: 3) -f:即使原档案属性设为只读,亦直接删除,无需逐一确认: 4)-r:将目录及以下之档案亦逐一 ...
- yarn和npm的对比,以及项目中使用方式
相比npm 的优点 1.npm安装是串行,而yarn是并行,速度大大提升 2.已经下载过的包会被缓存,无需重复下载,更关键的是,支持离线安装 3.精准的版本控制,加上验证每个包的完整性,保证每次安装的 ...
- python 虚拟环境指定python版本
virtualenv --no-site-packages -p python3.7 testenv source testenv/bin/activate deactivate 参考:https:/ ...
- Redis Streams 介绍
Stream是Redis 5.0版本引入的一个新的数据类型,它以更抽象的方式模拟日志数据结构,但日志仍然是完整的:就像一个日志文件,通常实现为以只附加模式打开的文件,Redis流主要是一个仅附加数据结 ...
- 是什么让我走上Java之路?
选择方向,很多人都为根据自己的兴趣爱好和自己的能力所长而作出选择.那么是什么让我走上Java之路? 整个高三我有两门课程没有听过课,一门是数学,一门是物理.当时候物理没有听课的原因很简单,我有一本&l ...
- mysql左连接查询结果不准确
现有四张表 表(1)res_resource_catalog 表(2)res_catalog_classify 表(3)res_resource_classify 表(4)res_resource_m ...
- Net core学习系列(十)——Net Core配置
一.前言 选项(Options)模式是对配置(Configuration)的功能的延伸.在12章(ASP.NET Core中的配置二)Configuration中有介绍过该功能(绑定到实体类.绑定至对 ...
- leetcode 688. “马”在棋盘上的概率
题目描述: 已知一个 NxN 的国际象棋棋盘,棋盘的行号和列号都是从 0 开始.即最左上角的格子记为 (0, 0),最右下角的记为 (N-1, N-1). 现有一个 “马”(也译作 “骑士”)位于 ( ...
- WINDOWS 命令行调用SAS代码 并指定输出路径 示例
ECHO "设置SAS.EXE 路径" SET PATH=D:\Program Files\SASHome\SASFoundation\9.4\SAS.EXE echo " ...