Gson - Comment convertir un objet Java vers / depuis JSON
Dans ce tutoriel, nous allons vous montrer comment utiliserGson pour convertir un objet Java vers / depuis JSON.
P.S All examples are tested by Gson 2.8.5
Note
JSON signifie JavaScript Object Notation, c'est un format léger d'échange de données. Vous pouvez voir que de nombreuses applications Java ont commencé à abandonner le format XML et à utiliser JSON comme nouveau format d'échange de données. Java est tout au sujet de l'objet, souvent, vous devez convertir un objet au format JSON pour l'échange de données ou vice versa.
Note
Jackson est un autre processeur JSON hautes performances, essayez ceciJackson 2 – Java
object to / from JSON
1. Télécharger Gson
pom.xml
com.google.code.gson gson 2.8.5
2. Gson Basic
toJson() - Convertit les objets Java en JSON
Gson gson = new Gson();
Staff obj = new Staff();
// 1. Java object to JSON file
gson.toJson(obj, new FileWriter("C:\\projects\\staff.json"));
// 2. Java object to JSON string
String jsonInString = gson.toJson(obj);
fromJson() - Convertit JSON en objets Java
Gson gson = new Gson();
// 1. JSON file to Java object
Staff staff = gson.fromJson(new FileReader("C:\\projects\\staff.json"), Staff.class);
// 2. JSON string to Java object
String json = "{'name' : 'example'}";
Staff staff = gson.fromJson(json, Staff.class);
// 3. JSON file to JsonElement, later String
JsonElement json = gson.fromJson(new FileReader("C:\\projects\\staff.json"), JsonElement.class);
String result = gson.toJson(json);
3. Objets Java en JSON
3.1 A Java POJO, later uses this for conversion.
Staff.java
package com.example;
import java.math.BigDecimal;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
public class Staff {
private String name;
private int age;
private String[] position; // array
private List skills; // list
private Map salary; // map
//getters and setters
}
3.2 In Gson, we can use gson.toJson() to convert Java objects to JSON.
GsonExample1.java
package com.example;
import com.google.gson.Gson;
import java.io.FileWriter;
import java.io.IOException;
import java.math.BigDecimal;
import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;
public class GsonExample1 {
public static void main(String[] args) {
Gson gson = new Gson();
Staff staff = createStaffObject();
// Java objects to String
// String json = gson.toJson(staff);
// Java objects to File
try (FileWriter writer = new FileWriter("C:\\projects\\staff.json")) {
gson.toJson(staff, writer);
} catch (IOException e) {
e.printStackTrace();
}
}
private static Staff createStaffObject() {
Staff staff = new Staff();
staff.setName("example");
staff.setAge(35);
staff.setPosition(new String[]{"Founder", "CTO", "Writer"});
Map salary = new HashMap() {{
put("2010", new BigDecimal(10000));
put("2012", new BigDecimal(12000));
put("2018", new BigDecimal(14000));
}};
staff.setSalary(salary);
staff.setSkills(Arrays.asList("java", "python", "node", "kotlin"));
return staff;
}
}
Par défaut, Gson écrit JSON en mode compact.
C:\projects\staff.json
{"name":"example","age":35,"position":["Founder","CTO","Writer"],"skills":["java","python","node","kotlin"],"salary":{"2018":14000,"2012":12000,"2010":10000}}
Pour activer le joli mode d'impression:
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
Gson gson = new GsonBuilder().setPrettyPrinting().create();
Sortie
C:\projects\staff.json
{
"name": "example",
"age": 35,
"position": [
"Founder",
"CTO",
"Writer"
],
"skills": [
"java",
"python",
"node",
"kotlin"
],
"salary": {
"2018": 14000,
"2012": 12000,
"2010": 10000
}
}
4. JSON à des objets Java
4.1 In Gson, we can use gson.fromJson to convert JSON back to Java objects.
GsonExample2.java
package com.example;
import com.google.gson.Gson;
import java.io.FileReader;
import java.io.IOException;
import java.io.Reader;
public class GsonExample2 {
public static void main(String[] args) {
Gson gson = new Gson();
try (Reader reader = new FileReader("c:\\projects\\staff.json")) {
// Convert JSON File to Java Object
Staff staff = gson.fromJson(reader, Staff.class);
// print staff object
System.out.println(staff);
} catch (IOException e) {
e.printStackTrace();
}
}
}
Sortie
Staff{name='example', age=35, position=[Founder, CTO, Writer], skills=[java, python, node, kotlin], salary={2018=14000, 2012=12000, 2010=10000}}
4.2 Convert to JsonElement
GsonExample3.java
package com.example;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.JsonElement;
import java.io.FileReader;
import java.io.IOException;
import java.io.Reader;
public class GsonExample3 {
public static void main(String[] args) {
// pretty print
Gson gson = new GsonBuilder().setPrettyPrinting().create();
try (Reader reader = new FileReader("c:\\projects\\staff.json")) {
// 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();
}
}
}
Sortie
{
"name": "example",
"age": 35,
"position": [
"Founder",
"CTO",
"Writer"
],
"skills": [
"java",
"python",
"node",
"kotlin"
],
"salary": {
"2018": 14000,
"2012": 12000,
"2010": 10000
}
}
Note
Plus deGson examples