2010-08-20 4 views
2

Est-ce que quelqu'un sait s'il est possible de générer des objets pour les données JSON? Je sais qu'il existe des bibliothèques d'objets JSON génériques, mais je suis à la recherche de plus spécifiques - similaires à la façon dont jaxb peut convertir des définitions SOAP ou des XSD en un modèle d'objet. Je sais qu'il devrait y avoir une sorte de fichier de définition JSON (que je ne sais pas si ce concept existe même dans JSON), mais je pense que ce serait beaucoup plus bénéfique. Pensez:JSON aux objets en java?

cas générique:

genericJsonObect.get("name"); 

Cas particulier:

specificJsonObject.getName(); 

Répondre

1

Je pense que le mappeur de données Jackson peut faire ce que vous avez besoin. Il peut sérialiser/désérialiser un objet Java réel dans un arbre JSON.

Mais d'autres API devrait également fonctionner:

  • Sojo
  • FlexJSON
  • Gson
3

Jackson et XStream ont la capacité de la carte JSON à POJO.

+0

Je recommanderais Jackson –

3

Voulez-vous que le fichier source .java soit généré pour vous? Ou pour mapper des beans java sortant vers des objets JSON?

Si le premier, il n'y a pas une telle bibliothèque (que je suis au courant de) si le plus tard, Google GSON est exactement ce dont vous avez besoin.

A partir des échantillons:

class BagOfPrimitives { 
    public int value1 = 1; 
    private String value2 = "abc"; 
    private transient int value3 = 3; 
    BagOfPrimitives() { 
    // no-args constructor 
    } 
} 

(sérialisation)

BagOfPrimitives obj = new BagOfPrimitives(); 
Gson gson = new Gson(); 
String json = gson.toJson(obj); 
System.out.println(json); 

Prints

{"value1":1,"value2":"abc"} 

(désérialisation)

BagOfPrimitives obj2 = gson.fromJson(json, BagOfPrimitives.class); 
System.out.println(obj2.value1) ; // value1 is 1 
+1

J'espérais qu'il y avait un moyen de générer les classes pojo Java sur la base d'une définition. – wuntee

+0

Ce n'est pas extrêmement difficile à faire. En fait ce serait un bon candidat pour un petit projet open source :) – OscarRyz

0

Je ne suis pas familier d'un tel projet de génération de code, bien que je suis sûr que de nombreux projets de bibliothèque Java JSON seraient intéressés à avoir une telle chose. Le problème principal est qu'il y a un bon langage de schéma pour JSON qui permettrait la génération de code; Le schéma JSON ne fonctionne que pour la validation.

Cependant: une possibilité que vous pourriez envisager est de simplement utiliser JAXB pour générer des beans, puis d'utiliser Jackson pour utiliser ces beans. Il prend en charge les annotations JAXB, ce qui vous permet de travailler avec JSON et les beans générés.