前言
- 写这篇文章的初衷,是为了自己了解Json格式转换,前端通常会将数据以 JSON 格式传输给后端,后端需要将接收到的 JSON 数据转换为对应的类型。
JSON 数据简介
1、什么是 JSON 数据
JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式:key:value
格式。
JSON 采用完全独立于语言的文本格式,这些特性使 JSON 成为理想的数据交换语言。易于人阅读和编写,同时也易于机器解析和生成。
2、JSON 字符串
JSON 字符串是一种 JSON 格式的 string 字符串,也就是 JSON 字符串也是 string 类型,只是这种 string 是有格式的,也就是类似 map 的格式【key:value】。
- JSON 字符串的键必须是字符串(也可以存数值,但是数值存进去,取出来还是 String);
- JSON 字符串的值可以是:数字(整数或浮点数),字符串(在双引号中),数组(在方括号中),对象(在花括号中),true/false/null。
3、后端 JSONObject 对象
JSONObject 是一种数据结构,可以理解为 JSON 格式的数据结构(key-value 结构),类似于 map,可以使用 put 方法给 JSONObject 对象添加元素。JSONObject 可以很方便的转换成字符串,也可以很方便的把其他对象转换成 JSONObject 对象。
代码
-
导入maven依赖,使用的是阿里的fastjson
<dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.83</version> </dependency>
-
实体类
@Data @AllArgsConstructor @NoArgsConstructor @ToString public class Student { private int id; private String name; private int age; private double score; }
-
测试类
public class Test { public static void main(String[] args) { // 实体类 Student s1 = new Student(); s1.setId(1); s1.setName("张三"); s1.setAge(18); s1.setScore(88); System.out.println("实体类文本格式:" + s1); String s1Json = JSONArray.toJSONString(s1); System.out.println("实体类json格式:" + s1Json); System.out.println("============================================"); // 整型list ArrayList<Integer> ids = new ArrayList<>(); ids.add(1); ids.add(2); System.out.println("整型list文本格式:" + ids); String idsJson = JSONArray.toJSONString(ids); System.out.println("整型list json格式:" + idsJson); System.out.println("============================================"); // 字符串类型list ArrayList<String> names = new ArrayList<>(); names.add("张三"); names.add("李四"); names.add("王五"); System.out.println("字符串类型list文本格式: " + names); String namesJson = JSONArray.toJSONString(names); System.out.println("字符串类型list json格式: " + namesJson); System.out.println("============================================"); // 对象型list ArrayList<Student> s = new ArrayList<>(); Student s2 = new Student(); s2.setId(2); s2.setName("李四"); s2.setAge(20); s2.setScore(90); s.add(s1); s.add(s2); System.out.println("对象类型list文本格式:" + s); String sJson = JSONArray.toJSONString(s); System.out.println("对象类型list json格式:" + sJson); System.out.println("============================================"); // 字符串型map HashMap<String, String> StringMap = new HashMap<>(); StringMap.put("id", "1"); StringMap.put("name", "王五"); StringMap.put("age", "21"); StringMap.put("score", "100"); System.out.println("字符串型map文本格式:" + StringMap); String StringMapJson = JSONArray.toJSONString(StringMap); System.out.println("字符串型map json格式:" + StringMapJson); System.out.println("============================================"); // 对象型map HashMap<String, Object> sMap = new HashMap<>(); sMap.put("s1", s1); sMap.put("s2", s2); System.out.println("对象型map文本格式:" + sMap); String sMapJson = JSONArray.toJSONString(sMap); System.out.println("对象型map json格式:" + sMapJson); System.out.println("============================================"); // map型list ArrayList<Map> MapList = new ArrayList<>(); MapList.add(sMap); System.out.println("map型list文本格式:" + MapList); String MapListJson = JSONArray.toJSONString(MapList); System.out.println("map型list json格式:" + MapListJson); } }
-
运行结果
实体类文本格式:Student(id=1, name=张三, age=18, score=88.0) 实体类json格式:{"age":18,"id":1,"name":"张三","score":88.0} ============================================ 整型list文本格式:[1, 2] 整型list json格式:[1,2] ============================================ 字符串类型list文本格式: [张三, 李四, 王五] 字符串类型list json格式: ["张三","李四","王五"] ============================================ 对象类型list文本格式:[Student(id=1, name=张三, age=18, score=88.0), Student(id=2, name=李四, age=20, score=90.0)] 对象类型list json格式:[{"age":18,"id":1,"name":"张三","score":88.0},{"age":20,"id":2,"name":"李四","score":90.0}] ============================================ 字符串型map文本格式:{score=100, name=王五, id=1, age=21} 字符串型map json格式:{"score":"100","name":"王五","id":"1","age":"21"} ============================================ 对象型map文本格式:{s1=Student(id=1, name=张三, age=18, score=88.0), s2=Student(id=2, name=李四, age=20, score=90.0)} 对象型map json格式:{"s1":{"age":18,"id":1,"name":"张三","score":88.0},"s2":{"age":20,"id":2,"name":"李四","score":90.0}} ============================================ map型list文本格式:[{s1=Student(id=1, name=张三, age=18, score=88.0), s2=Student(id=2, name=李四, age=20, score=90.0)}] map型list json格式:[{"s1":{"age":18,"id":1,"name":"张三","score":88.0},"s2":{"age":20,"id":2,"name":"李四","score":90.0}}]