常用的两个JSON解析 Gson & fastjson
- 环境安装
- 简介:
- 安装
- Gson / fastjson:
- Intellij IDEA的项目中导入Gson 或 fastjson 的*.jar文件
- JSON解析
- 使用Gson
- 将对象转换为JSON字符串
- 将JSON字符串转换为对象
- Code
- 使用fastjson
- 将对象转换为JSON字符串
- 将JSON字符串转换为对象
环境安装
环境:Gson, fastjson, Intellij IDEA,Java 语言
简介:
JSON: JavaScript Object Notation JS对象简谱 , 是一种轻量级的数据交换格式.
Gson 和 fastjson 都是一个Java库,可用于将Java对象转换为其JSON表示,还可以用于将JSON字符串转换为等效的Java对象。它们可以处理任意Java对象,包括没有源代码的预先存在的对象。
安装
Gson / fastjson:
(选择一个自己需要的就行)
Gson: https://github.com/google/gson fastjson: https://github.com/alibaba/fastjson
Gson:
fastjson:
Intellij IDEA的项目中导入Gson 或 fastjson 的*.jar文件
Step 1 :创建一个文件夹,命名为lib,并将 Gson 或 fastjson 的 .jar 文件粘贴至该文件夹。
Step 2:
点击 File -> Project Structure -> Libraries -> + -> Java -> 选择自己的项目 -> OK -> OK(添加Roots) -> Cancel( 不添加Modules)
。 然后会出现下面画面,点击(-)减号清掉。
再点击(+)加号,添加lib,选中要添加的.jar文件,点击OK。再点击Apply应用。
Step 3:Modules添加
点击
Modules -> 项目名 -> Dependencies -> (+)加号 -> Library
选择刚才添加的library,点击Add Selection
,再点击Apply
应用。
现在这个lib就可以在这个项目中使用了。
JSON解析
首先先创建一个等会要用的对象Object。我这里创建了一个叫Book的对象,该对象有三个String类型的属性,属性名分别是id,name,和info。快捷键直接插入Constructor,setter and getter,tostring,equals等方法。(这里不展示出来了)
然后创建一个新的类来进行下面的转换。
使用Gson
将对象转换为JSON字符串
步骤:
1. 引入JAR包
2. 在需要转换JSON字符串的位置编写如下代码即可: String json = new Gson().toJSON(要转换的对象);
例:
Book b = BookDao.find();
String json = new Gson().toJson(b);
System.out.println(json);
将JSON字符串转换为对象
步骤:
1. 引入JAR包
2. 在需要转换Java对象的位置, 编写如下代码:对象 = new Gson().fromJson(JSON字符串,对象类型.class);
例:
String json = "{“id”:1,“name”:“bookname”,“author”:“Lei”,“info”:“There are some information,“price”:18.0}”;
Book book = new Gson().fromJson(json, Book.class); System.out.println(book);
System.out.println(book);
Code
package JSONParsing;
import com.google.gson.Gson;
public class Demo1 {
public static void main(String[] args) {
// Method 1:
// 1. Creat Gson object
Gson g = new Gson();
// 2. Conversion (Object to JSON)
Book b1 = new Book("1101","New book","This is a new book.");
String s = g.toJson(b1);
System.out.println(s);
//Methid 2:
// Create Gson and converse JSON string to object
// JSON {"id":"1101","name":"New book","info":"This is a new book."}
Book b2 = new Gson().fromJson("{\"id\":\"1101\",\"name\":\"New book\",\"info\":\"This is a new book.\"}", Book.class);
System.out.println(b2.getId());
// Method 3
// HashMap
// JSON {"id":"1101","name":"New book","page":200,"info":["This is a new book.","This is the first line","This is the second line"]}
HashMap data = new Gson().fromJson("{\"id\":\"1101\",\"name\":\"New book\",\"page\":200,\"info\":[\"This is a new book.\",\"This is the first line\",\"This is the second line\"]}", HashMap.class);
System.out.println(data.get("info"));
System.out.println(data.get("info").getClass());
List info = (List) data.get("info");
System.out.println(info.get(1));
}
}
{“id”:“1101”,“name”:“New book”,“info”:“This is a new book.”}
1101
[This is a new book., This is the first line, This is the second line]
class java.util.ArrayList
This is the first line
使用fastjson
将对象转换为JSON字符串
步骤:
1. 引入JAR包
2. 在需要转换JSON字符串的位置编写如下代码即可: String json=JSON.toJSONString(要转换的对象);
例:
Book b = BookDao.find(); String json=JSON.toJSONString(b);
System.out.println(json);
将JSON字符串转换为对象
步骤:
1. 引入JAR包
2. 在需要转换Java对象的位置, 编写如下代码:类型 对象名=JSON.parseObject(JSON字符串, 类型.class);
或List<类型> list=JSON.parseArray(JSON字符串,类型.class);
例:
String json = "{“id”:1,“name”:“bookname”,“author”:“Lei”,“info”:“There are some information,“price”:18.0}”;
Book book = JSON.parseObject(json, Book.class); System.out.println(book);
import com.alibaba.fastjson.JSON;
import java.util.List;
public class Demo2 {
public static void main(String[] args) {
// Conversion
// Object to JSON
Book book = new Book("1002","The Little Prince","This is a good book.");
String json = JSON.toJSONString(book);
System.out.println(json);
// Conversion
// JSON {"id":"1101","name":"New book","info":"This is a new book."}
Book book2 = JSON.parseObject("{\"id\":\"1101\",\"name\":\"New book\",\"info\":\"This is a new book.\"}", Book.class);
System.out.println(book.getId());
// Conversion array ["one two three","four five six","eight nine ten"]
List<String> strings = JSON.parseArray("[\"one two three\",\"two three four\",\"three four five\"]", String.class);
System.out.println(strings.get(1));
}
}