web-dev-qa-db-fra.com

Comment convertir un fichier POJO en fichier JSON et inversement?

Je souhaite savoir s’il existe une Java disponible pour convertir un objet POJO en un objet JSON et inversement.

49
Mariah

Oui, il y a le json.org. Jetez un oeil à http://www.json.org/Java/index.html

[edité] Imaginez que vous ayez une simple classe Java) comme ceci:

public class Person {

    private String name;
    private Integer age;

    public String getName() { return this.name; }
    public void setName( String name ) { this.name = name; }

    public Integer getAge() { return this.age; }
    public void setAge( Integer age ) { this.age = age; }

}

Donc, pour le transformer en objet JSon, c'est très simple. Comme ça:

import org.json.JSONObject;

public class JsonTest {

    public static void main( String[] args ) {
        Person person = new Person();
        person.setName( "Person Name" );
        person.setAge( 333 );

        JSONObject jsonObj = new JSONObject( person );
        System.out.println( jsonObj );
    }

}

J'espère que ça aide.

[modifié] Ici, il y a un autre exemple, dans ce cas utilisant Jackson: https://brunozambiazi.wordpress.com/2015/08/15/working-with-json-in-Java/

Maven:

<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>2.6.1</version>
</dependency>

Et un lien (ci-dessous) pour trouver la dernière/meilleure version:

https://search.maven.org/classic/#search%7Cga%7C1%7Cg%3A%22com.fasterxml.jackson.core%22%20AND%20a%3A%22jackson-databind%22 =

45
bruno.zambiazi

Nous pouvons également utiliser les dépendances et plugins ci-dessous dans votre fichier pom - je me sers de maven. Avec leur utilisation, vous pouvez générer des POJO conformément à votre schéma JSON, puis utiliser le code indiqué ci-dessous pour renseigner un objet JSON de requête via un objet src spécifié en tant que paramètre de gson.toJson (Object src) ou inversement. Regardez le code ci-dessous:

Gson gson = new GsonBuilder().create();
String payloadStr = gson.toJson(data.getMerchant().getStakeholder_list());

Gson gson2 = new Gson();
Error expectederr = gson2.fromJson(payloadStr, Error.class);

Et les paramètres Maven:

<dependency>
    <groupId>com.google.code.gson</groupId>
    <artifactId>gson</artifactId>
    <version>1.7.1</version>
</dependency>

<plugin>
    <groupId>com.googlecode.jsonschema2pojo</groupId>
    <artifactId>jsonschema2pojo-maven-plugin</artifactId>
    <version>0.3.7</version>
    <configuration>
        <sourceDirectory>${basedir}/src/main/resources/schema</sourceDirectory>
        <targetPackage>com.example.types</targetPackage>
    </configuration>
    <executions>
        <execution>
            <phase>generate-sources</phase>
            <goals>
                <goal>generate</goal>
            </goals>
        </execution>
    </executions>
</plugin>
18
akshaymani

Si vous êtes au courant de Jackson 2 , il existe un excellent tutoriel à l'adresse mkyong.com sur la conversion Java Objets en JSON et vice-versa. Les extraits de code suivants ont été extraits de ce tutoriel.

Convertir Java en JSON, writeValue(...):

ObjectMapper mapper = new ObjectMapper();
Staff obj = new Staff();

//Object to JSON in file
mapper.writeValue(new File("c:\\file.json"), obj);

//Object to JSON in String
String jsonInString = mapper.writeValueAsString(obj);

Convertissez JSON en Java, readValue(...):

ObjectMapper mapper = new ObjectMapper();
String jsonInString = "{'name' : 'mkyong'}";

//JSON from file to Object
Staff obj = mapper.readValue(new File("c:\\file.json"), Staff.class);

//JSON from URL to Object
Staff obj = mapper.readValue(new URL("http://mkyong.com/api/staff.json"), Staff.class);

//JSON from String to Object
Staff obj = mapper.readValue(jsonInString, Staff.class);

Jackson 2 Dépendance:

<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>2.6.3</version>
</dependency>

Pour le tutoriel complet, veuillez vous rendre au lien indiqué ci-dessus.

17
Bilesh Ganguly