Heim >Java >javaLernprogramm >Wie kann ich Java-Klassen aus einem JSON-Schema in einem Maven-Projekt generieren?

Wie kann ich Java-Klassen aus einem JSON-Schema in einem Maven-Projekt generieren?

Linda Hamilton
Linda HamiltonOriginal
2024-11-20 13:33:16882Durchsuche

How can I generate Java classes from a JSON schema in a Maven project?

Java-Klassen aus JSON mit Maven generieren

Problem:

Wie können Sie in einem Java-Maven-Projekt Java generieren? Quelldateien aus einem JSON-Schema? Zum Beispiel mit dem folgenden JSON:

{
  "firstName": "John",  
  "lastName": "Smith",  
  "address": {  
    "streetAddress": "21 2nd Street",  
     "city": "New York"
  }
}

Sie möchten Java-Klassen generieren wie:

class Address  {
    JSONObject mInternalJSONObject;
     
    Address (JSONObject json){
        mInternalJSONObject = json;
    }
     
    String  getStreetAddress () {
        return mInternalJSONObject.getString("streetAddress");
    }
    
    String  getCity (){
        return mInternalJSONObject.getString("city");
    }
}

class Person {        
    JSONObject mInternalJSONObject;
    
    Person (JSONObject json){
        mInternalJSONObject = json;
    }
    
    String  getFirstName () {
        return mInternalJSONObject.getString("firstName");
    }
    
    String  getLastName (){
        return mInternalJSONObject.getString("lastName");
    }
    
    Address getAddress (){
        return Address(mInternalJSONObject.getString("address"));
    }
}

Lösung:

  1. JSON-Schema verwenden: Für eine robustere Lösung sollten Sie die Verwendung des JSON-Schemas in Betracht ziehen, das eine formale Definition der JSON-Struktur bereitstellt.
  2. jsonschema2pojo Maven Plugin :

    <plugin>
        <groupId>org.jsonschema2pojo</groupId>
        <artifactId>jsonschema2pojo-maven-plugin</artifactId>
        <version>1.0.2</version>
        <configuration>
            <sourceDirectory>${basedir}/src/main/resources/schemas</sourceDirectory>
            <targetPackage>com.myproject.jsonschemas</targetPackage>
            <sourceType>json</sourceType>
        </configuration>
        <executions>
            <execution>
                <goals>
                    <goal>generate</goal>
                </goals>
            </execution>
        </executions>
    </plugin>

    Setzen Sie sourceType auf json, wenn Ihre Quelle direkt JSON ist. Für JSON-Schemas entfernen Sie diese Zeile.

Zusätzliche Tipps:

  • JSON-Schema: Wenn Sie bereits Wenn Sie über JSON-Schemas verfügen, können Sie Java-Klassen generieren, indem Sie sie mithilfe der Klasse com.sun.codemodel.jsonschema.JsonUnboxer in org.jsonschema2pojo.model.Schema-Objekte konvertieren.
  • Benutzerdefinierte Codegenerierung: Verwenden Sie das Tool jsonschema2pojo direkt zum Generieren von Java-Code. Dies bietet Ihnen mehr Flexibilität, erfordert jedoch manuelle Änderungen, wenn sich das JSON-Schema ändert.

Das obige ist der detaillierte Inhalt vonWie kann ich Java-Klassen aus einem JSON-Schema in einem Maven-Projekt generieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn