JSON解析使用
简介:JSON(JavaScript Object Notation),JS对象简谱,是一种轻量级的数据交换(客户端和服务器)格式。
那么,为什么要使用JSON?JSON有什么作用呢?
假设,现在有一本书,你需要来描述它,
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:
母猪的产后护理
养猪的/info>
那JSON怎么做呢 对json来说 {} 这就算个对象
所以
JSON:
{
“name”:“金苹果”,
“info”:“种苹果”
}
所以,json中,一个对象, 由一个大括号表示. 括号中 描述对象的属性 . 通过键值对来描述对象的属性 (可以理解为, 大括号中, 包含的是一个个的键值对.)
格式:
键与值之间使用冒号连接, 多个键值对之间使用逗号分隔.
键值对的键 应使用引号引住 (通常Java解析时, 键不使用引号会报错. 而JS能正确解析.)
键值对的值, 可以是JS中的任意类型的数据
那么jSON的作用是什么呢?
1.将Java中的对象 快速的转换为 JSON格式的字符串.
2.将JSON格式的字符串, 转换为Java的对象.
JSON里用的最多的最常用的有着两种,谷歌的Gson以及阿里的Fastson,温馨提示:最好使用最新版本,以防高危漏洞
Gson
1.引入jar包(https://search.maven.org/artifact/com.google.code.gson/gson/2.8.6/jar)
2.在需要转换Java对象的位置, 编写如下代码: 对象 = new Gson().fromJson(JSON字符串,对象类型.class);
案例:
import com.google.gson.Gson;
public class Demo4 {
public static void main(String[] args) {
// Gson g = new Gson();
// Book b = new Book("1","西游记","取经的故事");
// String s = g.toJson(b);
String s = new Gson().toJson(new Book("1","西游记","取经的故事"));
System.out.println(s);
}
}
将字符串转换为java对象
public class Demo4 {
public static void main(String[] args) {
Book b = new Gson().fromJson("{\"id\":\"1\",\"name\":\"西游记\",\"info\":\"取经的故事\"}",Book.class);
System.out.println(b.getId());
}
}
Fastjson
1.引入jar包
(https://github.com/alibaba/fastjson)
2. 在需要转换JSON字符串的位置编写如下代码即可: String json=JSON.toJSONString(要转换的对象);
public class Demo4 {
public static void main(String[] args) {
Book b = new Book("1","长夜行","吃软饭的故事");
String s = JSON.toJSONString(b);
System.out.println(s);
}
}
将字符串转换成对象
在需要转换Java对象的位置, 编写如下代码: 类型 对象名=JSON.parseObject(JSON字符串, 类型.class); 或 List<类型> list=JSON.parseArray(JSON字符串,类型.class);
public class Demo4 {
public static void main(String[] args) {
Book book = JSON.parseObject("{\"id\":\"1\",\"info\":\"吃软饭的故事\",\"name\":\"长夜行\"}", Book.class);
System.out.println(book);
//["111","222","333"]
List<String> list = JSON.parseArray("[\"111\",\"222\",\"333\"]", String.class);
System.out.println(list.get(2));
}
}