Gson - So konvertieren Sie Java-Objekte in / von JSON
In diesem Tutorial zeigen wir Ihnen, wie SieGson verwenden, um Java-Objekte in / von JSON zu konvertieren.
P.S All examples are tested by Gson 2.8.5
Note
JSON steht für JavaScript Object Notation und ist ein leichtes Datenaustauschformat. Sie können sehen, dass viele Java-Anwendungen begonnen haben, das XML-Format wegzuwerfen und JSON als neues Datenaustauschformat zu verwenden. Bei Java dreht sich alles um Objekte. Oft müssen Sie ein Objekt für den Datenaustausch in das JSON-Format konvertieren oder umgekehrt.
Note
Jackson ist ein weiterer Hochleistungs-JSON-Prozessor. Probieren Sie diesenJackson 2 – Java
object to / from JSON aus
1. Laden Sie Gson herunter
pom.xml
com.google.code.gson gson 2.8.5
2. Gson Basic
toJson()
- Konvertiert Java-Objekte in 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()
- Konvertiert JSON in Java-Objekte
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. Java-Objekte zu 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; } }
Standardmäßig schreibt Gson JSON im kompakten Modus.
C:\projects\staff.json
{"name":"example","age":35,"position":["Founder","CTO","Writer"],"skills":["java","python","node","kotlin"],"salary":{"2018":14000,"2012":12000,"2010":10000}}
So aktivieren Sie den hübschen Druckmodus:
import com.google.gson.Gson; import com.google.gson.GsonBuilder; Gson gson = new GsonBuilder().setPrettyPrinting().create();
Ausgabe
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 zu Java Objekten
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(); } } }
Ausgabe
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(); } } }
Ausgabe
{ "name": "example", "age": 35, "position": [ "Founder", "CTO", "Writer" ], "skills": [ "java", "python", "node", "kotlin" ], "salary": { "2018": 14000, "2012": 12000, "2010": 10000 } }
Note
MehrGson examples