目录
前言
JSON 是 JavaScript 数据范例中的一个子集,目前主流的浏览器都使用了通用的 JavaScript 引擎组件,以是在解析 JSON 格式时具有良好的兼容性。这便是 “JavaScript Object Notation”(缩写为 JSON )诞生的由来。
本文按照我们的输入和输出效果范例进行分类,包括从别的范例转换到 JSON 相干,以及从 JSON 相干转换到别的范例这两大类。
注:以下都是基于阿里的 fastjson 来讲解操作的。
fastjson 可以将 JSON Parse 的性能提升到极致,是目前 Java 语言中最快的 JSON 库。fastjson接口简朴易用,已经被广泛使用在缓存序列化、协议交互、Web 输出、Android 客户端等多种应用场景。- <dependency>
- <groupId>com.alibaba</groupId>
- <artifactId>fastjson</artifactId>
- <version>1.2.83</version>
- </dependency>
复制代码 一、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 转 JsonObject2.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<Computer> 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 转 JsonArray2.4 List 转Json 字符串
实现示例:- /**
- * List 转 Json 字符串
- */
- @Test
- void listToJsonStr() {
- List<Computer> 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<String, Object> 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 字符串转 JavaBean3.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 字符串转 JsonObject3.3 Json 字符串转 List
实现示例:- /**
- * Json 字符串转 List
- */
- @Test
- void jsonStrToList(){
- String jsonStr = "[{ "activityId": "871047729944117248",\n" +
- " "activityType": "OA",\n" +
- " "awardId": "886982449056579584",\n" +
- " "awardName": "OA测试" }]";
- List<Map> maps = JSONArray.parseArray(jsonStr, Map.class);
- maps.forEach(System.out::println);
- }
复制代码 转换效果:
Json 字符串转 List3.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 computer = 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 数组字符串转 JsonArray4.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 转换经验大全就分享到这里。如果文章有错误和不敷,还期待大家的指正。或者大家有什么别的补充,也欢迎在批评区交流!
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |