如何将Java对象转换为JSON(Gson)?

Posted 易百教程

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何将Java对象转换为JSON(Gson)?相关的知识,希望对你有一定的参考价值。

在本教程中,我们将演示如何使用Gson将Java对象转换为JSON,或从JSON转换Java对象。所有示例均使用Gson 2.6.2进行测试。


注意
JSON代表javascript object Notation,它是一种轻量级的数据交换格式。 许多Java应用程序开始抛弃xml格式,并开始使用JSON作为新的数据交换格式。 Java是关于对象的东西,通常情况下,您需要将对象转换为用于数据交换的JSON格式或反之。

1. 快速参考

1.1 toJson() - 将Java对象转换为JSON

Gson gson = new Gson();

Staff obj = new Staff();


// 1. Java ob<x>ject to JSON and save into a file

gson.toJson(obj new FileWriter("D:\\file.json"));


// 2. Java ob<x>ject to JSON and assign to a String

String jsonInString = gson.toJson(obj);


1.2 fromJson() - 将JSON转换为Java对象

Gson gson = new Gson();


// 1. JSON to Java ob<x>ject read it from a file.

Staff staff = gson.fromJson(new FileReader("D:\\file.json") Staff.class);


// 2. JSON to Java ob<x>ject read it from a Json String.

String jsonInString = "{'name' : 'maxsu'}";

Staff staff = gson.fromJson(jsonInString Staff.class);


// JSON to JsonElement convert to String later.

JsonElement json = gson.fromJson(new FileReader("D:\\file.json") JsonElement.class);

    String result = gson.toJson(json);


2. Gson依赖

要使用Gson,请声明以下依赖项。

文件:pom.xml -

<dependency>
        <groupId>com.google.code.gson</groupId>
        <artifactId>gson</artifactId>
        <version>2.6.2</version>
</dependency>

XML

3. POJO

一个简单的POJO,稍后进行测试。

import java.math.BigDecimal;
import java.util.List;
public class Staff {    private String name;    private int age;    private String position;    private BigDecimal salary;    private List<String> skills;    //...

Java

4. Java对象转为JSON

Gson示例将Staff对象转换为JSON格式的字符串。

import com.google.gson.Gson;
import java.io.FileWriter;
import java.io.IOException;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;
public class GsonExample {    public static void main(String[] args) {        Staff staff = createDummyob<x>ject();        //1. Convert ob<x>ject to JSON string        Gson gson = new Gson();        String json = gson.toJson(staff);        System.out.println(json);        //2. Convert ob<x>ject to JSON string and save into a file directly        try (FileWriter writer = new FileWriter("D:\\staff.json")) {            gson.toJson(staff writer);        } catch (IOException e) {            e.printStackTrace();        }    }    private static Staff createDummyob<x>ject() {        Staff staff = new Staff();        staff.setName("maxsu");        staff.setAge(25);        staff.setPosition("Founder");        staff.setSalary(new BigDecimal("10000"));        List<String> skills = new ArrayList<>();        skills.add("java");        skills.add("python");        skills.add("shell");        staff.setSkills(skills);        return staff;    }}

Java

执行上面代码,输出结果如下 -

{"name":"maxsu""age":25"position":"Founder""salary":10000"skills":["java""python""shell"]}

//new file is created in D:\\staff.json"

Shell

5. JSON转为Java对象

Gson示例从文件中读取JSON并将其转换回Java对象。

import com.google.gson.Gson;

import java.io.FileReader;

import java.io.IOException;

import java.io.Reader;

public class Gson2Example {    public static void main(String[] args) {        Gson gson = new Gson();        try (Reader reader = new FileReader("D:\\staff.json")) {            // Convert JSON to Java ob<x>ject            Staff staff = gson.fromJson(reader Staff.class);            System.out.println(staff);            // Convert JSON to JsonElement and later to String            /*JsonElement json = gson.fromJson(reader JsonElement.class);            String jsonInString = gson.toJson(json);            System.out.println(jsonInString);*/        } catch (IOException e) {            e.printStackTrace();        }    }}

Java

执行上面示例代码,得到以下结果 -

Staff{name='maxsu' age=25 position='Founder' salary=10000 skills=[java python shell]}



以上是关于如何将Java对象转换为JSON(Gson)?的主要内容,如果未能解决你的问题,请参考以下文章

java 怎么将对象转换成json字符串

Kotlin 使用 Gson 将 json 字符串转换为对象列表

如何使用 GSON 将 List 转换为 JSON 对象?

GSON。如何将json对象转换为json数组?

在 PHP 中将对象转换为 JSON 并将 JSON 转换为对象,(像 Gson for Java 之类的库)

使用 Gson 将 XML 文件转换为 Json