初识JSON
简介:
JSON: JavaScript Object Notation JS对象简谱 , 是一种轻量级的数据交换格式.
对象格式
一本书
书名
简介
各语言对比(没有对比就没有伤害)
java
class Book{
private String name;
private String info;
get/set...
}
Book b = new Book();
b.setName(“金苹果”);
b.setInfo(“种苹果”);
...
js:
var b = new Object();
b.name = "金苹果";
b.info = "种苹果";
XML:
<book>
<name>金苹果</name>
<info>种苹果</info>
</book>
JSON:
{//一个大括号表示一个对象
"name":"金苹果",
"info":"种苹果"
}
一个对象, 由一个大括号表示.
括号中描述对象的属性,通过键值对来描述对象的属性(可以理解为, 大括号中, 包含的是一个个的键值对格式:
键与值之间使用冒号连接, 多个键值对之间使用逗号分隔.
键值对的键应使用引号引住 (通常Java解析时, 键不使用引号会报错. 而JS能正确解析.)
键值对的值, 可以是JS中的任意类型的数据
数组格式
在JSON格式中可以与对象互相嵌套
[元素1,元素2...]
案例
{
“name”:“小明”,
“age”:18,
“friend”:[“小小”,“李明”,“李华”,“小丽”,{
“name”:“小菜”,
“info”:“一条菜狗”
}],
“father”:{
“name”:“大明”,
“length”:“172cm”
}
}
Java与JSON
有什么用?
将Java中的对象快速的转换为JSON格式的字符串.
将JSON格式的字符串, 转换为Java的对象.
Gson
将对象转换为JSON字符串
转换JSON字符串的步骤:
-
1.引入JAR包
-
2.在需要转换JSON字符串的位置编写如下代码即可: String json = new Gson().toJSON(要转换的对象);
将JSON字符串转换为对象:
-
1.引入JAR包
-
2.在需要转换Java对象的位置, 编写如下代码:
对象 = new Gson().fromJson(JSON字符串,对象类型.class);
案例:
public static void main(String[] args) {
// 对象转JSON
//1. 创建Gson对象
Gson gson = new Gson();
//2. 转换
BookJSON book = new BookJSON("1001", "金瓶梅", "潘金莲,瓶儿,春梅");
// 使用匿名对象
//String s1 = new Gson().toJson(book);
String s = gson.toJson(book);
//{"id":"1001","name":"金瓶梅","info":"潘金莲,瓶儿,春梅"}
System.out.println(s);
System.out.println("-----------");
// JSON转对象
//1. 创建Gson对象
Gson g = new Gson();
//2. 转换 :格式:fromJson({"key":"value","key":"value"}, 类名.class) //java key不加""会解析不了
//{"id":"1001","name":"金瓶梅","info":"潘金莲,瓶儿,春梅", "page":["第一页内容", "第二页内容"]}
BookJSON b = g.fromJson("{\"id\":\"1001\",\"name\":\"金瓶梅\",\"info\":\"潘金莲,瓶儿,春梅\"}", BookJSON.class);
System.out.println(b.getId());//1001
//转换成Map集合
HashMap data = g.fromJson("{\"id\":\"1001\",\"name\":\"金瓶梅\",\"info\":\"潘金莲,瓶儿,春梅\", \"page\":[\"第一页内容\", \"第二页内容\"]}", HashMap.class);
System.out.println(data.get("page"));//[第一页内容, 第二页内容] 不是数组是ArrayList集合
System.out.println(data.get("page").getClass());//class java.util.ArrayList
}
FastJson
将对象转换为JSON字符串
转换JSON字符串的步骤:
- 1.引入JAR包
- 2.在需要转换JSON字符串的位置编写如下代码即可: String json=JSON.toJSONString(要转换的对象);
将JSON字符串转换为对象
-
1.引入JAR包
-
2.在需要转换Java对象的位置, 编写如下代码:
类型 对象名=JSON.parseObject(JSON字符串, 类型.class);
或
List<类型> list=JSON.parseArray(JSON字符串,类型.class);
案例:
public static void main(String[] args) {
BookJSON book = new BookJSON("1002", "红楼梦", "假宝玉,薛宝钗,林黛玉");
//1. 对象 转换成 JSON
String json = JSON.toJSONString(book);
System.out.println(json);
System.out.println("--------------");
//1. JSON 转换成 对象{"1002", "红楼梦", "假宝玉,薛宝钗,林黛玉"}
BookJSON object = JSON.parseObject("{\"id\":\"1002\",\"info\":\"假宝玉,薛宝钗,林黛玉\",\"name\":\"红楼梦\"}", BookJSON.class);
System.out.println(object);
String str = JSON.parseObject("{\"id\":\"1002\",\"info\":\"假宝玉,薛宝钗,林黛玉\",\"name\":\"红楼梦\",\"other\":[\"西游记\", \"三国演义\", \"水浒传\"]}", String.class);
System.out.println(str);
// JSON 转换成 ArrayList集合 ["西游记", "三国演义", "水浒传"]
List<String> array = JSON.parseArray("[\"西游记\", \"三国演义\", \"水浒传\"]", String.class);
System.out.println(array.getClass());//class java.util.ArrayList
}