如何将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)?的主要内容,如果未能解决你的问题,请参考以下文章
Kotlin 使用 Gson 将 json 字符串转换为对象列表