Java对JSON数据的解析方式
(1)Gson
Gson是Google公司发布的一个开放源代码的库,主要用途为序列化Java对象为JSON字符串,或反序列化JSON字符串为Java对象。
将java对象序列化为JSON字符串:
public class Book {
private String name;
private int bookId;
private String info;
public Book() {}
public Book(String name, int bookId, String info) {
this.name = name;
this.bookId = bookId;
this.info = info;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getBookId() {
return bookId;
}
public void setBookId(int bookId) {
this.bookId = bookId;
}
public String getInfo() {
return info;
}
public void setInfo(String info) {
this.info = info;
}
@Override
public String toString() {
return "Book{" +
"name='" + name + '\'' +
", bookId=" + bookId +
", info='" + info + '\'' +
'}';
}
}
@Override
public String toString() {
return "Book{" +
"name='" + name + '\'' +
", bookId=" + bookId +
", info='" + info + '\'' +
'}';
}
//为了代码简洁,省去get/set方法
}
public static void main(String[] args) {
Book book = new Book("三国演义", 1001, "讲述了三国时期的战乱故事");
Gson gson = new Gson();//导入json的jar包
String s = gson.toJson(book);//传入一个对象,将其序列化为JSON字符串
System.out.println(s);
}
结果:
将JSON字符串解析为Java对象:
public static void main(String[] args) {
//导入json的jar包
Gson gson = new Gson();
//将JSON字符串解析为指定类的对象
Book book = gson.fromJson("{\"name\":\"三国演义\",\"bookId\":1001,\"info\":\"讲述了三国时期的战乱故事\"}", Book.class);
System.out.println(book);
}
结果:
(2)FastJson
fastjson是阿里巴巴开发的库,作用与gson类似
将对象序列化为JSON字符串:
package com.kkb.task010307;
import com.alibaba.fastjson.JSON;//引入fastjson的jar包并导入
public class Demo4 {
public static void main(String[] args) {
Book book = new Book("西游记", 1005, "师徒四人西天取经");
//将对象序列化为JSON字符串
String jsonString = JSON.toJSONString(book);
System.out.println(jsonString);
}
}
结果:
将JSON字符串(JSON对象)解析为Java对象:
package com.kkb.task010307;
import com.alibaba.fastjson.JSON;
class Demo5 {
public static void main(String[] args) {
//将JSON字符串解析为Java对象
Book book = JSON.parseObject("{\"bookId\":1005,\"info\":\"师徒四人西天取经\",\"name\":\"西游记\"}", Book.class);
System.out.println(book);
}
}
结果:
将JSON字符串(JSON数组)解析为数组:
package com.kkb.task010307;
import com.alibaba.fastjson.JSON;
import java.util.List;
public class Demo6 {
public static void main(String[] args) {
List<Object> objectList = JSON.parseArray("[1010,\"哈哈哈\",true,null]", Object.class);
System.out.println(objectList);
}
}
结果: