- 前言
-
一、JSON 回顾
- 1.1结构形式
-
二、其它类型 -> JSON相关
- 2.1 JavaBean 转 JsonObject
- 2.2 JavaBean 转 Json 字符串
- 2.3 List 转 JsonArray
- 2.4 List 转Json 字符串
- 2.5Map 转 Json 字符串
-
三、JSON 相关 -> 其它类型
- 3.1 Json 字符串转 JavaBean
- 3.2 Json 字符串转 JsonObject
- 3.3 Json 字符串转 List
- 3.4Json字符串转Map
-
四、Json 相关互转
- 4.1 Json 数组字符串转 JsonArray
- 4.2 JsonObject 转 Json字符串
- 五、文章小结
前言
JSON 是 JavaScript 数据类型中的一个子集,目前主流的浏览器都使用了通用的 JavaScript 引擎组件,所以在解析 JSON 格式时具有良好的兼容性。这便是 “JavaScript Object Notation”(缩写为 JSON )诞生的由来。
本文按照我们的输入和输出结果类型进行分类,包括从其它类型转换到 JSON 相关,以及从 JSON 相关转换到其它类型这两大类。
注:以下都是基于阿里的 fastjson 来讲解操作的。
fastjson 可以将 JSON Parse 的性能提升到极致,是目前 Java 语言中最快的 JSON 库。fastjson接口简单易用,已经被广泛使用在缓存序列化、协议交互、Web 输出、Android 客户端等多种应用场景。
com.alibaba
fastjson
1.2.83
一、JSON 回顾
在开始分享文章的主要内容前,我们可以先回顾一下关于 JSON 的基础知识。
1.1结构形式
JSON 有键值对形式和数组形式这2种结构形式。
以下这个例子就是键值对类型的:
{
"playerInfo": {
"playerName": "Alex",
"playerAge": 18
},
"activityId": "871047729944117248",
"activityType": "OA",
"awardId": "886982449056579584",
"awardName": "OA测试",
"stageId": "816982449034752351",
"roundId": "808657473445768946",
"noticeTypes": "APP"
}
这种结构的 JSON 数据规则是:一个无序的 “key” : “value” 集合,一个 JSON 对象以 { 左括号开始,以 } 右括号结束。每个 “key” 后跟一个英文的 : 冒号,每个”key” : “value”之间使用英文的 , 逗号进行分隔。而每个 JSON 对象是可以嵌套的。
那 JSON 的数组形式又是怎么样的呢?下面同样再举一个例子:
{
"data": {
"content": [
{
"id": "926160574061371392",
"status": "PROGRESSING",
"updateContent": "测试一下",
"version": "10.6.0",
"createTime": "2023-10-31 17:11:28"
},
{
"id": "926160574061371326",
"status": "CANCELED",
"updateContent": "测试测试",
"version": "123.0",
"createTime": "2023-10-31 17:11:28"
}
]
},
"code": 200,
"msg": "成功",
"success": true
}
数组形式的 JSON 数据就是值(value)的有序集合。一个数组以 [ 左中括号开始, ] 右中括号结束。值之间使用 , 逗号分隔。
二、其它类型 -> JSON相关
这里的其它类型,包括 Java 对象、数组、String 字符串、泛型的 以及 Object 对象等;JSON相关表示 Json 对象、Json 字符串等。
2.1 JavaBean 转 JsonObject
实体类如下:
@Data
@EqualsAndHashCode(callSuper = true)//自动生成属性的 equals() 和 hashCode()方法,同时声明允许使用用父类的属性和方法
public class Computer extends BaseEntity {
/**
* 中央处理器
*/
private String cpu;
/**
* 内存
*/
private String memory;
/**
* GPU
*/
private String gpu;
/**
* 固态硬盘
*/
private String ssd;
}
实现示例:
/**
* JavaBean 转 JsonObject
*/
@Test
public void javaBeanToJsonObject(){
Computer computer = new Computer();
computer.setCpu("r7-4800h");
computer.setGpu("RTX-3060");
computer.setSsd("512GB");
computer.setMemory("32GB");
JSONObject jsonObject = (JSONObject) JSONObject.toJSON(computer);
log.info("------结果内容:{} 类型为:{}------", jsonObject, jsonObject.getClass());
}
转换结果:
JavaBean 转 JsonObject
2.2 JavaBean 转 Json 字符串
实现示例:
/**
* JavaBean 转 Json 字符串
*/
@Test
public void javaBeanToJsonString(){
Computer computer = new Computer();
computer.setCpu("r7-4800h");
computer.setGpu("RTX-3060");
computer.setSsd("512GB");
computer.setMemory("32GB");
String jsonStr = JSON.toJSONString(computer);
log.info("------结果内容:{} 类型为:{}------", jsonStr, jsonStr.getClass());
}
转换结果:
JavaBean 转 Json 字符串
2.3 List 转 JsonArray
实现示例:
/**
* List 转 JsonArray
*/
@Test
public void listToJsonArray(){
List list = computerService.list();
JSONArray jsonArray = (JSONArray)JSONArray.toJSON(list);
log.info("------结果内容1:{} 类型为:{}------", jsonArray.get(0), jsonArray.getClass());
log.info("------结果内容1:{} 类型为:{}------", jsonArray.get(1), jsonArray.getClass());
log.info("------结果内容1:{} 类型为:{}------", jsonArray.get(2), jsonArray.getClass());
}
转换结果:
List 转 JsonArray
2.4 List 转Json 字符串
实现示例:
/**
* List 转 Json 字符串
*/
@Test
void listToJsonStr() {
List list = new ArrayList();
Computer computerOne = new Computer();
computerOne.setCpu("r7-4800h");
computerOne.setGpu("RTX-3060");
computerOne.setSsd("512GB");
list.add(computerOne);
Computer computerTwo = new Computer();
computerTwo.setCpu("i5-12600k");
computerTwo.setGpu("RTX-3060Ti");
computerTwo.setSsd("512GB");
list.add(computerTwo);
String listJson = JSON.toJSONString(list);
System.out.println(listJson);
}
转换结果:
List 转 Json 字符串
2.5Map 转 Json 字符串
实现示例:
/**
* Map 转 Json 字符串
*/
@Test
void mapToJsonStr(){
Map map = new HashMap();
map.put("key1","AAA");
map.put("key2","bbb");
map.put("key3","CCC");
String mapJson = JSON.toJSONString(map);
System.out.println("mapJson:" + mapJson);
}
转换结果:
Map 转 Json 字符串
三、JSON 相关 -> 其它类型
3.1 Json 字符串转 JavaBean
实现示例:
/**
* Json 字符串转 JavaBean
*/
@Test
void jsonStrToJavaBean(){
Computer computer = new Computer();
computer.setCpu("r7-4800h");
computer.setGpu("RTX-3060");
computer.setSsd("512GB");
computer.setMemory("32GB");
String jsonStr = JSON.toJSONString(computer);
System.out.println(jsonStr);
Computer result = JSONObject.parseObject(jsonStr, Computer.class);
System.out.println(result);
}
转换结果:
Json 字符串转 JavaBean
3服务器托管网.2 Json 字符串转 JsonObject
实现示例:
/**
* Json 字符串转 JsonObject
*/
@Test
void jsonStrToJsonObject() {
String jsonStr = "{
"activityId": "871047729944117248",n" +
" "activityType": "OA",n" +
" "awardId": "886982449056579584",n" +
" "awardName": "OA测试" }";
JSONObject parse = JSONObject.parseObject(jsonStr);
System.out.println(parse.getString("activityId"));
}
转换结果:
Json 字符串转 JsonObject
3.3 Json 字符串转 List
实现示例:
/**
* Json 字符串转 List
*/
@Test
void jsonStrToList(){
String jsonStr = "[{ "activityId": "871047729944117248",n" +
" "activityType": "OA",n" +
" "awardId": "886982449056579584",n" +
" "awardName": "OA测试" }]";
List
转换结果:
Json 字符串转 List
3.4Json字符串转Map
实现示例:
/**
* Json 字符串转 Map
*/
@Test
void jsonStrToMap(){
String jsonStr = "{"AA": 1,"BB":2,"CC":3}";
Map map = JSONObject.parseObject(jsonStr, Map.class);
map.forEach((o1, o2) -> System.out.println(o1 + "=" + o2));
}
转换结果:
Json 字符串转 Map
四、Json 相关互转
4.1 Json 数组字符串转 JsonArray
实现示例:
/**
* Json 数组字符串转 JsonArray
*/
@Test
void jsonStrToJsonArray() {
JSONArray jsonArray = new JSONArray();
//初始化一个 Java 对象
Computer com服务器托管网puter = new Computer();
computer.setCpu("r7-4800h");
computer.setGpu("RTX-3060");
computer.setSsd("512GB");
//初始化一个 JSONObject 对象
JSONObject jsonObject = new JSONObject();
jsonObject.put("AAA", 100);
//将上述两个对象都丢到 JSONArray 对象中,即 JSONArray 不是一般的数组,是可以放各种 Object 到一个 JSONArray 对象里的
jsonArray.add(computer);
jsonArray.add(jsonObject);
String str = JSONArray.toJSONString(jsonArray);
System.out.println(str);
String jsonArrStr = "[{"cpu" : "r7-4800h","gpu" : "RTX-3060"},{"cpu" : "i5-12600K","gpu" : "RTX-3060Ti"}]";
JSONArray result = JSONArray.parseArray(jsonArrStr);
result.forEach(o -> System.out.println(o.toString()));
}
转换结果:
Json 数组字符串转 JsonArray
4.2 JsonObject 转 Json字符串
实现示例:
/**
* JsonObject 转 Json字符串
*/
@Test
void jsonObjectToJsonStr() {
JSONObject jsonObject = new JSONObject();
//初始化一个 Java 对象
Computer computer = new Computer();
computer.setCpu("r7-4800h");
computer.setGpu("RTX-3060");
computer.setSsd("512GB");
jsonObject.put("computer", computer);
String jsonStr = JSON.toJSONString(jsonObject);
System.out.println(jsonStr);
}
转换结果:
JsonObject 转 Json字符串
五、文章小结
关于 Json 格式的介绍和日常开发中的 Json 转换经验大全就分享到这里。如果文章有错误和不足,还期待大家的指正。或者大家有什么其它补充,也欢迎在评论区交流!
服务器托管,北京服务器托管,服务器租用 http://www.fwqtg.net
机房租用,北京机房租用,IDC机房托管, http://www.fwqtg.net
在 PHP 中,GET 和 POST 是用于从客服务器托管网户端向服务器传递数据的两种常用的 HTTP 请求方法。它们之间的主要区别在于数据传递的方式和使用场景。 GET 方法: 数据传递方式: 使用 URL 参数传递数据,数据附加在 URL 后面,以 ? 开…