2011-01-27 13 views
5

Tengo un Json estructurado para ser mutable en algunos campos, ¿cómo puedo analizarlo (deserializarlo) correctamente en Java usando Gson google json api?¿Cómo uso Google Json Parsing API (Gson) para analizar algunos campos dinámicos en my json?

ejemplo JSON:

{ 
type: 'sometype', 
fields: { 
    'dynamic-field-1':[{value: '', type: ''},...], 
    'dynamic-field-2':[{value: '', type: ''},...], 
... 
} 

Los campos dinámicos cambiará su nombre dependiendo de la estructura enviado.

¿Hay alguna manera?

Respuesta

8

Usted puede utilizar encargo (de) la serialización como sugiere Raph Levien, sin embargo, Gson entiende de forma nativa mapas.

Si ejecuta este obtendrá la salida { "A": "B"}

Map<String, String> map = new HashMap<String, String>(); 
map.put("A", "B"); 
System.out.println(new Gson().toJson(src)); 

El mapa puede contener ahora las llaves dinámicas. Para volver a leer ese Json, debe decirle a Gson sobre la información del tipo a través de un TypeToken, que es la forma en que Gson graba la información del tipo de tiempo de ejecución que borra Java.

Map fromJson = 
    new Gson().fromJson(
     "{\"A\":\"B\"}", 
     new TypeToken<HashMap<String, String>>() {}.getType()); 
System.out.println(fromJson.get("A")); 

Espero que ayude. :)

+0

Gracias, esta es una manera más fácil :) –

3

Usando google-gson lo hago de esta manera:

JsonElement root = new JsonParser().parse(jsonString); 

y luego se puede trabajar con JSON. e.g .:

String value = root.getAsJsonObject().get("type").getAsString(); 
Cuestiones relacionadas