2010-03-13 21 views
7

Je voudrais savoir s'il existe une page Web/un logiciel capable de «traduire» un objet de flux JSON en un objet Java avec des attributs.Flux JSON vers Java Objet

Par exemple:

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

deviendrait:

class Person { 
    private String firstName; 
    private String lastName; 
    private Address address; 

    public String getFirstName() { return firstName; } 
    public String getLastName() { return lastName; } 
    public Address getAddress() { return address; } 

    public void setFirstName(String firstName) { this.firstName = firstName; } 
    public void setLastName(String lastName) { this.lastName = lastName; } 
    public void setAddress(Address address) { this.address = address; } 

    public String toString() { 
     return String.format("firstName: %s, lastName: %s, address: [%s]", firstName, lastName, address); 
    } 
} 

class Address { 
    private String streetAddress; 
    private String city; 

    public String getStreetAddress() { return streetAddress; } 
    public String getCity() { return city; } 

    public void setStreetAddress(String streetAddress) { this.streetAddress = streetAddress; } 
    public void setCity(String city) { this.city = city; } 

    public String toString() { 
     return String.format("streetAddress: %s, city: %s", streetAddress, city); 
    } 
} 

Je ne demande pas que parce que je suis paresseux, mais le JSON je voudrais analyser a beaucoup d'attributs .

Répondre

1

Vous voudrez peut-être jeter un oeil à Gson, la bibliothèque JSON Java de Google. Il a des méthodes pour sérialiser les objets de Java vers JSON et les désérialiser de JSON vers l'objet Java. Je ne l'ai jamais utilisé pour la désérialisation, donc je ne peux pas fournir beaucoup de détails là-dessus, par exemple comment gérer l'objet imbriqué (adresse) mais je suppose qu'il est capable de le gérer.

L'API doc: http://google-gson.googlecode.com/svn/tags/1.3/docs/javadocs/index.html Le guide de l'utilisateur: https://sites.google.com/site/gson/gson-user-guide

Bonne chance!

2

J'ai utilisé avec succès json-lib pour la sérialisation json et la désérialisation. Votre exemple ressemblerait à ceci:

String json = "{'firstName': 'John', 'lastName': 'Smith', 'address': {'streetAddress': '21 2nd Street', 'city': 'New York'}}"; 
JSONObject jsonObject = JSONObject.fromObject(json); 
Person bean = (Person) JSONObject.toBean(jsonObject, Person.class); 
System.out.println(bean); 

et imprime

firstName: John, lastName: Smith, address: [streetAddress: 21 2nd Street, city: New York] 

Si vous avez besoin de le personnaliser il y a beaucoup de crochets d'extension. Dans mon application, j'ai ajouté le support de la sérialisation d'un Locale à une chaîne "sv_SE" plutôt qu'à un objet. Et pour désérialiser cette même chaîne dans un objet Locale.