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 Listskills; // 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"}); Mapsalary = 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