【Java】常用的JSON解析教程(Gson&fastjson)

环境安装

环境: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));
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值