Maison >Java >javaDidacticiel >Comment générer des classes Java à partir d'un schéma JSON dans un projet Maven ?

Comment générer des classes Java à partir d'un schéma JSON dans un projet Maven ?

Linda Hamilton
Linda Hamiltonoriginal
2024-11-20 13:33:16879parcourir

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

Générer des classes Java à partir de JSON à l'aide de Maven

Problème :

Dans un projet Java Maven, comment générer du Java fichiers sources à partir d'un schéma JSON ? Par exemple, étant donné le JSON suivant :

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

Vous souhaitez générer des classes Java comme :

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"));
    }
}

Solution :

  1. Utiliser le schéma JSON : pour une solution plus robuste, envisagez d'utiliser le schéma JSON, qui fournit une définition formelle de la structure du JSON.
  2. plugin jsonschema2pojo Maven :

    <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>

    Définissez sourceType sur json si votre source est directement JSON. Pour les schémas JSON, supprimez cette ligne.

Conseils supplémentaires :

  • Schéma JSON : Si vous avez déjà avez des schémas JSON, vous pouvez générer des classes Java en les convertissant en objets org.jsonschema2pojo.model.Schema à l'aide de la classe com.sun.codemodel.jsonschema.JsonUnboxer.
  • Génération de code personnalisé : Utilisez l'outil jsonschema2pojo directement pour générer du code Java, ce qui vous offre plus de flexibilité mais nécessite des modifications manuelles si le schéma JSON change.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn