2012-03-06 19 views

risposta

35

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

[a cura] Immaginate di avere una semplice classe Java in questo modo:

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

} 

Così, 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.

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

+0

Thnx ma ... voglio che se ottengo un Pojo, posso passare l'oggetto pojo e in questo modo la libreria costruisce l'oggetto JSON ... può farlo? puoi darmi un esempio? Grazie mille – Mariah

+0

@Bruno Come possiamo ottenere i valori di List o Set usando questo JSONObject. –

+5

Mi piace questo approccio - sfortunatamente non ha funzionato per me. Ho ricevuto il messaggio di errore: "Il costruttore JSONObject (Person) non è definito" .. qualche idea del perché? Lo chiamo in qualche codice Android .. è semplicemente Java. Grazie – gnB

14

Possiamo anche fare uso di seguito indicato dipendenza e plug-in nel file pom - Faccio uso di Maven. Con l'uso di questi puoi generare POJO secondo lo schema JSON e quindi utilizzare il codice fornito di seguito per popolare l'oggetto JSON di richiesta tramite l'oggetto src specificato come parametro su gson.toJson (Object src) o viceversa. Guardate 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 di 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> 
5

Se siete a conoscenza di Jackson 2, c'è un grande tutorial su come convertire oggetti Java a JSON e viceversa. I seguenti snippet di codice sono stati presi da questo tutorial.

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

Jackson 2 Dipendenza:

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

-2

Utilizzare GSON per convertire POJO in JSONObject. Refer here.

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

Problemi correlati