什么是JSON?
JSON是一种取代XML的数据结构,和xml相比,它更小巧但描述能力却不差,由于它的小巧所以网络传输数据将减少更多流量从而加快速度。
JSON就是一串字符串 只不过元素会使用特定的符号标注。
{} 双括号表示对象
[] 中括号表示数组
"" 双引号内是属性或值
: 冒号表示后者是前者的值(这个值可以是字符串、数字、也可以是另一个数组或对象)
所以 {“name”: “张三”} 可以理解为是一个包含name为张三的对象,
而使用{“name”:[“张三”,“李四”]}就表示包含两个对象的数组。
接下来的JSON解析包含 谷歌gson和 阿里的fastjson 两部分
以图书为案例
package com.xzk.Demo2;
import java.util.Objects;
public class Book {
private String id;
private String name;
private String info;
public Book(String 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 Objects.equals(id, book.id) &&
Objects.equals(name, book.name) &&
Objects.equals(info, book.info);
}
@Override
public int hashCode() {
return Objects.hash(id, name, info);
}
public String getId() {
return id;
}
public void setId(String 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解析之Gson
引入jar包(gson)
将对象转换为json字符串
public class Demo1 {
public static void main(String[] args) {
Book b = new Book("100", "金苹果", "辛勤种植苹果的故事");
String s = new Gson().toJson(b);
System.out.println(s);
}
}
将json字符串转换为对象
//{"id":"100","name":"金苹果","info":"辛勤种植苹果的故事"}
public class Demo2 {
public static void main(String[] args) {
Gson g = new Gson();
Book b = g.fromJson("{\"id\":\"100\",\"name\":\"金苹果\",\"info\":\"辛勤种植苹果的故事\"}", Book.class);
System.out.println(b.getId());
}
}
//{"id":"100","name":"金苹果","info":"辛勤种植苹果的故事","page":["锄禾日当午","汗滴禾下土","粒粒皆辛苦"]}
public class Demo3 {
public static void main(String[] args) {
Gson g = new Gson();
HashMap data = g.fromJson("{\"id\":\"100\",\"name\":\"金苹果\",\"info\":\"辛勤种植苹果的故事\",\"page\":[\"锄禾日当午\",\"汗滴禾下土\",\"粒粒皆辛苦\"]}", HashMap.class);
List page =(List) data.get("page");
System.out.println(page.get(1));
}
}
二、JSON解析之FastJson
引入jar包(fastjson)
将对象转换为json字符串
public class Demo4 {
public static void main(String[] args) {
Book book = new Book("1001", "唐诗三百首", "床前明月光,疑似地上霜,举头望明月,低头思故乡");
String json = JSON.toJSONString(book);
System.out.println(json);
}
}
将json字符串转换为对象
//{"id":"1001","name":"唐诗三百首","info":"床前明月光,疑似地上霜,举头望明月,低头思故乡"}
public class Demo5 {
public static void main(String[] args) {
Book book = JSON.parseObject("{\"id\":\"1001\",\"info\":\"床前明月光,疑似地上霜,举头望明月,低头思故乡\",\"name\":\"唐诗三百首\"}", Book.class);
System.out.println(book.getId());
}
}
public class Demo6 {
//["一二三","二三四","三四五"]
public static void main(String[] args) {
List<String> strings = JSON.parseArray("[\"一二三\",\"二三四\",\"三四五\"]", String.class);
System.out.println(strings.get(1));
}
}