Parece que no puedo resolver esto. Estoy intentando la manipulación del árbol JSON en GSON, pero tengo un caso en el que no sé o tengo un POJO para convertir una cadena, antes de convertirla JsonObject. ¿Hay alguna manera de ir directamente de un Stringa JsonObject?
He intentado lo siguiente (sintaxis Scala):
val gson = (new GsonBuilder).create
val a: JsonObject = gson.toJsonTree("""{ "a": "A", "b": true }""").getAsJsonObject
val b: JsonObject = gson.fromJson("""{ "a": "A", "b": true }""", classOf[JsonObject])
pero afalla, el JSON se escapa y se analiza como JsonStringúnico, y
bdevuelve un vacío JsonObject.
¿Algunas ideas?

Respuestas:
use JsonParser; por ejemplo:
fuente
new JsonParser().parse(..).getAsJsonObject();JsonParser.parseString(str).getAsJsonObject().Intente usar en
getAsJsonObject()lugar de un molde directo usado en la respuesta aceptada:fuente
membersla clave principal. Aquí hay una muestra {"miembros": {"clave1": "13756963814f2c594822982c0307fb81", "clave2": verdadero, "clave3": 123456789}}JsonObject jsonObj = JsonParser.parseString(str).getAsJsonObject()orGson gson = new Gson(); JsonElement element = gson.fromJson (jsonStr, JsonElement.class); JsonObject jsonObj = element.getAsJsonObject();fuente
JsonObjectla definición de clase? Proviene de la biblioteca Gson de Google. Puede consultar la documentación aquí .La forma más simple es usar la
JsonPrimitiveclase, que se deriva deJsonElement, como se muestra a continuación:fuente
Acabo de encontrar el mismo problema. Puede escribir un deserializador personalizado trivial para la
JsonElementclase:fuente
Creo que este es un enfoque más fácil:
Y luego podrás llamarlo así:
De esta forma, todos los objetos de hibernación se convertirán automáticamente.
fuente
El
JsonParserconstructor ha quedado en desuso. Utilice el método estático en su lugar:fuente
Encontré un escenario con clasificación remota del almacén de datos en EXTJS 4.X donde la cadena se envía al servidor como una matriz JSON (de solo 1 objeto).
Enfoque similar a lo que se presenta previamente para una cadena simple, solo necesita conversión a JsonArray primero antes de JsonObject.
Cadena del cliente: [{"propiedad": "COLUMN_NAME", "direction": "ASC"}]
fuente
fuente