Come convertire POJO in JSON e viceversa?


Voglio sapere se c'è qualche API Java disponibile per convertire un oggetto POJO in un oggetto JSON e viceversa.

Author: Will, 2012-03-07

4 answers

Sì, c'è il json.org. Date un'occhiata a http://www.json.org/java/index.html

[modificato] Immagina di avere una semplice classe Java come questa:

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

}

Quindi, per trasformarlo in un oggetto JSon, è molto semplice. Come questo:

import org.json.JSONObject;

public class JsonTest {

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

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

}

Spero che aiuti.

[modificato] Qui c'è un altro esempio, in questo caso usando Jackson: https://brunozambiazi.wordpress.com/2015/08/15/working-with-json-in-java /

 37
Author: bruno.zambiazi, 2016-03-15 20:04:35

Possiamo anche fare uso di sotto data dipendenza e plugin nel file pom - Faccio uso di maven. Con l'uso di questi è possibile generare POJO secondo il proprio schema JSON e quindi utilizzare il codice indicato di seguito per popolare l'oggetto JSON della richiesta tramite l'oggetto src specificato come parametro per gson.toJson (Oggetto src) o viceversa. Guarda il codice qui sotto:

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

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

E le impostazioni 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>
 16
Author: akshaymani, 2014-08-26 18:42:45

Se sei a conoscenza di Jackson 2 , c'è un ottimo tutorial su mkyong.com su come convertire oggetti Java in JSON e viceversa. I seguenti frammenti di codice sono stati presi da quel tutorial.

Convertire oggetto Java in 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);

Converti JSON in oggetto 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);

Dipendenza da Jackson 2:

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

Per il tutorial completo, vai al link sopra indicato.

 10
Author: Bilesh Ganguly, 2016-03-29 05:07:06

Usa GSON per convertire POJO in JSONObject. Fare riferimento qui.

Per convertire JSONObject in POJO, basta chiamare il metodo setter nel POJO e assegnare i valori direttamente dal JSONObject.

 -2
Author: Jayaraj PS, 2017-05-23 12:18:25