关于Java的JSON解析
- 什么是JSON
- 对象格式
- JSON的使用
- Gson的使用
- 第一步:
- 第二步:
- FastJson的使用
- 第一步:
- 第二步:
什么是JSON
JS对象简谱。顾名思义(JavaScript Object Notation),是一种轻量级的数据交换格式。
对象格式
知道JSON是什么之后得知道怎么使用,这里我们不详细解释所有的,讲述一个常用的,在JSON中一个{}就代表一个对象。
(可以理解为, 大括号中, 包含的是一个个的键值对.)
格式:
键与值之间使用冒号连接, 多个键值对之间使用逗号分隔.
键值对的键 应使用引号引住 (通常Java解析时, 键不使用引号会报错. 而JS能正确解 析.)
键值对的值, 可以是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,XML,JSON同时描述一段信息时的区别,还是有点不一样的。
JSON的使用
我们在使用JSON解析文件时需要导入jar文件包,接下来我们将介绍两种常用的JSON,Gson和FastJson,一个是属于谷歌,一个属于阿里。
Gson的使用
第一步:
导入gson-2.8.6.jar。笔者这里提供两种下载方式。
- 笔者资源库免费下载gson-2.8.6.jar。
- 在开源网站https://github.com/google/gson下载
- 在IDEA导入该jar包
现在还不行,还需要在点击file打开Project Structure进行项目的一些配置。打开Libraries,添加项目,再添加刚刚导入gson-2.8.6.jar文件包。
第二步:
在需要转换JSON字符串的位置编写如下代码即可:
String json = new Gson().toJSON(要转换的对象);
实例1:将java类代码转换为JSON代码
先创建一个book类,分别导入一些常用的方法。
package kkb.class_code.Leve4_核心类库.Demo8XML与JSON.Gson和FastJson解析;
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 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;
}
@Override
public String toString() {
return "book{" +
"id='" + id + '\'' +
", name='" + name + '\'' +
", info='" + info + '\'' +
'}';
}
}
package kkb.class_code.Leve4_核心类库.Demo8XML与JSON.Gson和FastJson解析;
import com.google.gson.Gson;
public class Gson1 {
public static void main(String[] args) {
//1. 创建Gson对象
Gson g = new Gson();
//2. 转换
book b = new book("001","青苹果","种苹果很幸苦");
String s = g.toJson(b);
System.out.println(s);
}
}
结果:
{"id":"001","name":"青苹果","info":"种苹果很幸苦"}
实例2:将JSON代码转换为java类和集合
package kkb.class_code.Leve4_核心类库.Demo8XML与JSON.Gson和FastJson解析;
import com.google.gson.Gson;
import java.awt.print.Book;
import java.util.HashMap;
public class JSON转java类 {
public static void main(String[] args) {
//1. 创建Gson对象
Gson g = new Gson();
//2. 转换 : {"id":"001","name":"青苹果","info":"种苹果很幸苦"}
//转为类
//book b = g.fromJson("{\"id\":\"001\",\"name\":\"青苹果\",\"info\":\"种苹果很幸苦\"}", book.class);
//System.out.println(b.getName());
//转为集合
HashMap data = g.fromJson("{\"id\":\"001\",\"name\":\"青苹果\",\"info\":\"种苹果很幸苦\"}", HashMap.class);
System.out.println(data.get("name"));
}
}
结果:
青苹果
FastJson的使用
第一步:
导入fastjson-1.2.70.jar。笔者这里同样提供两种下载方式。
- 笔者资源库免费下载fastjson-1.2.70.jar。
- 在开源网站https://github.com/alibaba/fastjson下载
第二步:
在需要转换JSON字符串的位置编写如下代码即可:
对象 = new Gson().fromJson(JSON字符串,对象类型.class);
实例1:将java类代码转换为JSON代码
package kkb.class_code.Leve4_核心类库.Demo8XML与JSON.Gson和FastJson解析;
import com.alibaba.fastjson.JSON;
public class FastJson转java类 {
public static void main(String[] args) {
book bk =new book("002","打油诗","从前有座庙,庙里有个和尚");
//1. 转换
String json = JSON.toJSONString(bk);
System.out.println(json);
}
}
实例2:将JSON代码转换为java类
package kkb.class_code.Leve4_核心类库.Demo8XML与JSON.Gson和FastJson解析;
import com.alibaba.fastjson.JSON;
import kkb.class_code.Leve4_核心类库.Demo8XML与JSON.book.Book;
public class java类转FastJson {
public static void main(String[] args) {
//1. 转换 {"id":"002","info":"从前有座庙,庙里有个和尚","name":"打油诗"}
Book bok = JSON.parseObject("{\"id\":\"002\",\"info\":\"从前有座庙,庙里有个和尚\",\"name\":\"打油诗\"}", Book.class);
System.out.println(bok.getName());
}
}
结果:
002
以上就是关于JSON使用的简单介绍,关于Gson和FastJson两种的使用,看个人需求。