HOWTO · Java

Objekt in JSON in Java serialisieren

Dieses Tutorial zeigt, wie Sie ein Objekt in Java in JSON serialisieren.

Dieses Tutorial demonstriert die Verwendung von Java-JSON und Jackson API, um ein Objekt in JSON in Java zu serialisieren.

Objekt in JSON in Java serialisieren

Es gibt verschiedene Bibliotheken, die für JSON-Operationen verwendet werden. Diese Bibliotheken können auch Java-Objekte mithilfe der Java-Programmierung in JSON serialisieren.

Verwenden Sie die Java-JSON-API, um Java-Objekte in JSON zu serialisieren

Java-JSON ist eine Drittanbieter-API zur Durchführung von JSON-Operationen in Java, da Java JSON im integrierten Modus nicht unterstützt. Diese Bibliothek kann Java-Objekte in JSON serialisieren.

Das Java-JSON kommt mit verschiedenen Features und ist besser als viele ähnliche Bibliotheken. Die Hauptmerkmale sind:

  • Rückwärtskompatibilität.
  • Konsistente und zuverlässige Ergebnisse.
  • Es hat eine schnelle Ausführung und einen geringen Speicherbedarf.
  • Es gibt keine externen Abhängigkeiten.
  • Es bietet die Einhaltung der JSON-Spezifikation.

Bevor Sie diese API verwenden, müssen Sie sie Ihrem Erstellungspfad hinzufügen. Dies kann einfach mit der Gradle-Projektabhängigkeit durchgeführt werden:

implementation 'org.json:json:20210307'

Sie können es auch zu Ihrem allgemeinen Java-Projekt hinzufügen, indem Sie die jar-Datei dieser API von hier herunterladen und sie dem Build-Pfad Ihres Projekts hinzufügen.

Das Java-JSON stellt eine Klasse JSONWriter bereit, mit der wir Java-Daten in ein JSON-Objekt serialisieren können. Versuchen wir es an einem Beispiel:

package delftstack;

import java.io.StringWriter;
import java.io.Writer;
import org.json.JSONException;
import org.json.JSONWriter;

public class Example {
  public static void main(String[] args) throws JSONException {
    Writer DemoUser = new StringWriter();

    var JSON_Writer = new JSONWriter(DemoUser);

    JSON_Writer.object();
    JSON_Writer.key("Name").value("Sheeraz");
    JSON_Writer.key("Occupation").value("Software Engineer");
    JSON_Writer.key("Age").value(28);
    JSON_Writer.key("Married").value(false);

    JSON_Writer.key("Skills");
    JSON_Writer.array();
    JSON_Writer.value("Java");
    JSON_Writer.value("Python");
    JSON_Writer.value("PHP");
    JSON_Writer.value("Matlab");
    JSON_Writer.value("R");
    JSON_Writer.endArray();

    JSON_Writer.endObject();

    System.out.println(DemoUser);
  }
}

Der obige Code serialisiert die Daten mithilfe der JSONWriter-Klasse der API in ein JSON-Objekt. Siehe Ausgabe:

{"Name":"Sheeraz","Occupation":"Software Engineer","Age":28,"Married":false,"Skills":["Java","Python","PHP","Matlab","R"]}

Verwenden Sie die Jackson-API, um das Java-Objekt in JSON zu serialisieren

Jackson ist eine Open-Source-Bibliothek für JSON-Operationen in Java. Die Bibliothek kann JSON-Objekte in Java serialisieren und deserialisieren.

Diese Bibliothek hat die Methode writeValue(...), die verwendet wird, um Java-Objekte in JSON-Objekte zu serialisieren. Diese API kann als Maven-Abhängigkeit hinzugefügt werden:

<dependency>
    <groupId>org.codehaus.jackson</groupId>
    <artifactId>jackson-mapper-asl</artifactId>
    <version>1.9.13</version>
</dependency>

Eine andere Möglichkeit besteht darin, Ihrem allgemeinen Projekterstellungspfad jars für die Jackson-API hinzuzufügen. Laden Sie die Gläser von den folgenden Links herunter:

  1. Jackson-Datenbindung
  2. Jackson-Kern

Sobald die API jetzt zum Build-Pfad hinzugefügt wurde, können wir ein Beispiel zum Serialisieren von Java-Objekten in JSON ausprobieren:

package delftstack;

import com.fasterxml.jackson.core.JsonGenerationException;
import com.fasterxml.jackson.core.JsonParseException;
import com.fasterxml.jackson.databind.JsonMappingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import java.io.File;
import java.io.IOException;

public class Example {
  public static void main(String args[]) {
    Example JSON_Tester = new Example();
    try {
      Employee Employee1 = new Employee();
      Employee1.setAge(28);
      Employee1.setName("Sheeraz");
      JSON_Tester.writeJSON(Employee1);

      Employee Employee2 = JSON_Tester.readJSON();
      System.out.println(Employee2);

    } catch (JsonParseException e) {
      e.printStackTrace();
    } catch (JsonMappingException e) {
      e.printStackTrace();
    } catch (IOException e) {
      e.printStackTrace();
    }
  }

  private void writeJSON(Employee employee)
      throws JsonGenerationException, JsonMappingException, IOException {
    ObjectMapper Object_Mapper = new ObjectMapper();
    Object_Mapper.writeValue(new File("employee.json"), employee);
  }

  private Employee readJSON() throws JsonParseException, JsonMappingException, IOException {
    ObjectMapper Object_Mapper = new ObjectMapper();
    Employee employee = Object_Mapper.readValue(new File("employee.json"), Employee.class);
    return employee;
  }
}

class Employee {
  private String Employee_Name;
  private int Employee_Age;
  public Employee() {}
  public String getName() {
    return Employee_Name;
  }
  public void setName(String Employee_Name) {
    this.Employee_Name = Employee_Name;
  }
  public int getAge() {
    return Employee_Age;
  }
  public void setAge(int Employee_Age) {
    this.Employee_Age = Employee_Age;
  }
  public String toString() {
      return "Employee [Employee Name: "+Employee_Name+",
      Employee Age: "+Employee_Age+ " ]";
  }
}

Der obige Code konvertiert die Daten aus einer Java-Klasse in JSON. Siehe Ausgabe:

Employee [Employee Name: Sheeraz, Employee Age: 28 ]