JSON
json的定义
JSON:JavaScript 对象表示法(JavaScript Object Notation), 一种轻量级的数据交换格式,易于人
阅读和编写,也易于机器解析和生成。用来描述数据结构,它是基于纯文本的数据格式,是一种轻量级
的数据交换格式。广泛应用于服务端与客户端的数据交互。
JSON 是存储和交换文本信息的语法,类似 XML。
JSON 采用完全独立于语言的文本格式,也使用了类似于 C 语言家族的习惯(包括 C, C++, C#,
Java, JavaScript, Perl, Python…)这些特性使 JSON 成为理想的数据交换语言。
JSON 是一个新的人类可读(human readable)的数据格式,在过去几年中已变得非常受欢迎,尤其
是在 web 开发中。
JSON可以是普通的键值对{key:value},也可以是键值对的数组[{key1:value1},{key2:value2}]
还可以两者嵌套使用
JSON格式
a)对象:“名称/值”对的集合A collection of name/value pairs)
不同的语言中,它被理解为对象(object),记录(record),结构(struct),字典 (dictionary),
哈希表(hash table),有键列表(keyed list),或者关联数组(associative array)。
b)、数组:值的有序列表(An ordered list of values)
在大多数语言中,它被理解为数组(array)、矢量(vector),列表(list)或者序列(sequence)。经过对
象、数组 2 种结构就可以组合成复杂的数据结构了。
集体形式:
Json 以 key-value 的形式存储数据
Key 的取值 为 String 类型;
Value 的取值为 String,boolean,Number,数组,Object,null;
Json串以{开始,以}结尾;
Json 串中数组是以[开始,以]结尾;
Json 串中Object是以{开始,以}结尾;
解析方式:
Gson
Gson 是一个 Google 提供的一个 Java 库,可用于将 Java 对象转换为 JSON 表示。它也可以被用来
将 JSON 字符串转换成一个等效的 Java 对象。
提供易于使用的机制如 toString() 和构造函数(工厂方法)将 Java 转换为 JSON,反之亦然。允许自
定义表示对象,支持任意复杂的对象,生成紧凑和可读性的 JSON 输出
jar包下载地址:https://mvnrepository.com/artifact/com.google.code.gson/gson/2.8.5
gson可以分别实现json和对象、list、map之间的相互转化
代码如下:
package com.json;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
import com.pojo.User;
@WebServlet(value="/json1")
public class TestGson extends HttpServlet{
@Override
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
Gson gson = new Gson();
System.out.println("-------------对象转json----------------");
User user1 = new User("张三",21,1);
String json1 = gson.toJson(user1);
System.out.println(json1);
System.out.println("-------------json转对象----------------");
User user2 = gson.fromJson(json1,user1.getClass());
System.out.println(user2);
System.out.println();
System.out.println("-------------list转json----------------");
List<User> list = new ArrayList<>();
User u1 = new User("张三",21,1);
User u2 = new User("李四",28,0);
User u3 = new User("王五",37,1);
list.add(u1);
list.add(u2);
list.add(u3);
String json3 = gson.toJson(list);
System.out.println(json3);
System.out.println("-------------json转list----------------");
List<User> list2 = gson.fromJson(json3,new TypeToken<List<User>>(){}.getType());
System.out.println(list2);
System.out.println();
System.out.println("-------------map转json----------------");
Map<String,Object> map = new HashMap<>();
User user3 = new User("唐家三少",38,1);
map.put("id", 6);
map.put("user", user3);
String json4 = gson.toJson(map);
System.out.println(json4);
System.out.println("-------------json转map----------------");
Map<String,Object> maps = gson.fromJson(json4,new TypeToken<Map<String,Object>>(){}.getType());
for(Entry<String,Object> entry :maps.entrySet())
System.out.println(entry.getKey()+"--"+entry.getValue());
}
}
运行结果:
-------------对象转json----------------
{"username":"张三","age":21,"gender":1}
-------------json转对象----------------
User [username=张三, age=21, gender=1]
-------------list转json----------------
[{"username":"张三","age":21,"gender":1},{"username":"李四","age":28,"gender":0},{"username":"王五","age":37,"gender":1}]
-------------json转list----------------
[User [username=张三, age=21, gender=1], User [username=李四, age=28, gender=0], User [username=王五, age=37, gender=1]]
-------------map转json----------------
{"id":6,"user":{"username":"唐家三少","age":38,"gender":1}}
-------------json转map----------------
id--6.0
user--{username=唐家三少, age=38.0, gender=1.0}