2011-03-21 19 views
8

Estoy tratando de deserializar un objeto json en un Java Bean. El principal problema que estoy enfrentando es que me gustaría tratar el campo object de la cadena JSON como una cadena sencilla, incluso si contiene un objeto JSON que pueden ser correctas. La estructura JSON es así:deserializar json field en cadena simple con gson

{ 
    "type":"user", 
    "object":{ 
     "id":"1", 
     ...} 
} 

¿Cómo puedo saber GSON ignorar el valor object de modo que no quede deserializar en un objeto? Me gustaría que sólo se asigna a un campo llano String en mi grano de modo que pueda disponer de una deserialización adecuado para ello, una vez que llegué el tipo del campo type.

+0

logré deserializar parcialmente el objeto viendo esta respuesta: http://stackoverflow.com/questions/3769473/what-is-the-easiest-way-to-parse-json-using-gson-when-the -elemento-a-parse-es-un/4455636 # 4455636 – mox601

Respuesta

1

no sé si el problema está resuelto. Me encontré con una pregunta similar y aquí está cómo lo resolví:

JsonDeserializer le permite hacer es el propietario adaptador para deserializar que **:

class JavaBeanDeserializer implements JsonDeserializer<JavaBeanObject>() { 
    public JavaBeanObject fromJson(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException { 
    // return JavaBeanObject built using your logic. 
} 

usted tiene que registrarse JavaBeanDeserializer al objeto Gson mientras se construyen:

Gson gson = new GsonBuilder().registerTypeAdapter(JavaBeanObject.class, new JavaBeanDeserializer()).create(); 
+0

no trataron su solución, pero resolvieron este con el enlace en el comentario anterior – mox601

10

Sólo declaran como del tipo JSONObject

class ExampleJsonModel { 
    @SerializedName("type") 
    public String type; 

    @SerializedName("object") 
    public JsonObject object; 
} 
Cuestiones relacionadas