简介
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>种苹果</name>
</book>
JSON:
{
"name":"金苹果";
"info":"种苹果";
}
一个对象, 由一个大括号表示.
括号中 描述对象的属性 . 通过键值对来描述对象的属性
(可以理解为, 大括号中, 包含的是一个个的键值对.)
格式:
键与值之间使用冒号连接, 多个键值对之间使用逗号分隔.
键值对的键 应使用引号引住 (通常Java解析时, 键不使用引号会报错. 而JS能正确解析.)
键值对的值, 可以是JS中的任意类型的数据
数据格式
在JSON格式中可以与对象互相嵌套
[元素1, 元素2...]
我在用的JSON数据转换网站
https://www.sojson.com/json/json_online.html
JAVA与JSON
将JAVA中的对象转换成JSON格式的字符串
将JSON格式的字符串转换成JAVA的对象
Gson
- 将JAVA的对象转换成JSON格式的字符串
步骤:
1. 引入JAR包
2. 在需要转换JSON字符串的位置编写如下代码即可:
String json = new Gson().toJSON(要转换的对象)
案例:
public class Demo1 {
public static void main(String[] args) {
// 1. 创建Gson对象
Gson gson = new Gson();
// 2. 创建java对象
Book book = new Book(1, "葵花宝典", "必先自宫");
// 3. 转换book对象
String json = gson.toJson(book);
// 4. 展示转换成的json格式的字符串
System.out.println(json);
}
static class Book {
private int id;
private String name;
private String info;
public Book(int id, String name, String info) {
this.id = id;
this.name = name;
this.info = info;
}
public Book() {
}
@Override
public String toString() {
return "Book{" +
"id=" + id +
", name='" + name + '\'' +
", info='" + info + '\'' +
'}';
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Book book = (Book) o;
return id == book.id && Objects.equals(name, book.name) && Objects.equals(info, book.info);
}
@Override
public int hashCode() {
return Objects.hash(id, name, info);
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getInfo() {
return info;
}
public void setInfo(String info) {
this.info = info;
}
}
}
- 将JSON格式的字符串转换成为JAVA的对象
步骤:
1. 引入JAR包
2. 在需要转换Java对象的位置编写如下代码:
对象 = new Gson().fromJson(JSON字符串, 对象类型.class);
案例:
String json = ""{\"id\":1,\"name\":\"葵花宝典\",\"info\":\"必要自宫\"}";
// 1. 创建Gson对象
Gson gson = new Gson();
// 2. 转换json格式的字符串
Book book = gson.fromJson(json, Book.class);
// 3. 展示
System.out.println(book);
注意:在进行转换时,如果字符串中有数组的部分,将自动转换成ArrayList集合。
如下:
public static void main(String[] args) {
// 1. 创建Gson对象
Gson g = new Gson();
// 2. 转换 :{"id":"1","name":"葵花宝典","info":"必先自宫","content":["12345","上山打老虎"]}
HashMap data = g.fromJson("{\"id\":\"1\",\"name\":\"葵花宝典\",\"info\":\"必先自宫\",\"content\":[\"12345\",\"上山打老虎\"]}", HashMap.class);
// 3. 输出结果
System.out.println(data.get("content"));
System.out.println(data.get("content").getClass());
}
结果:
[12345, 上山打老虎]
class java.util.ArrayList
FastJson
- 将JAVA对象转换成为JSON格式字符串
步骤:
1. 导入JAR包
2. 在需要转换成JSON字符串的位置编写如下代码:
String json = JSON.toJSONString(要转换的对象);
案例:
public static void main(String[] args) {
Book book = new Book("100010", "葵花宝典", "欲练此功,必先自宫");
// 1. 转换
String json = JSON.toJSONString(book);
System.out.println(json);
}
结果:
{"id":"100010","info":"欲练此功,必先自宫","name":"葵花宝典"}
- 将JSON格式字符串转换成为JAVA对象
步骤:
1. 导入JAR包
2. 在需要转换成JAVA对象的位置编写如下代码:
类型 对象名=JSON.parseObject(JSON字符串, 类型.class);
或
List<类型> list=JSON.parseArray(JSON字符串,类型.class);
案例1:
public static void main(String[] args) {
String json = "{\"id\":\"100010\",\"info\":\"欲练此功,必先自宫\",\"name\":\"葵花宝典\"}";
// 1. 转换
Book book = JSON.parseObject(json, Book.class);
System.out.println(book);
}
案例2:
public static void main(String[] args) {
// 转换 : ["一二三四五","上山打老虎"]
List<String> strings = JSON.parseArray("[\"一二三四五\",\"上山打老虎\"]", String.class);
for (String str : strings) {
System.out.println(str);
}
}
ps:更建议使用Gson