Não consigo entender isso. Estou tentando manipulação de árvore JSON no GSON, mas tenho um caso em que não conheço ou tenho um POJO para converter uma string antes de converter para JsonObject
. Existe uma maneira de ir diretamente de um String
para JsonObject
?
Eu tentei o seguinte (sintaxe 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])
mas a
falhar, o JSON é escapado e analisado como JsonString
único e
b
retorna um vazio JsonObject
.
Alguma ideia?
Respostas:
use JsonParser; por exemplo:
fonte
new JsonParser().parse(..).getAsJsonObject();
JsonParser.parseString(str).getAsJsonObject()
.Tente usar em
getAsJsonObject()
vez de um elenco reto usado na resposta aceita:fonte
members
a chave dos pais. Aqui está uma amostra { "membros": { "key1": "13756963814f2c594822982c0307fb81", "key2": true "key3": 123456789}}JsonObject jsonObj = JsonParser.parseString(str).getAsJsonObject()
orGson gson = new Gson(); JsonElement element = gson.fromJson (jsonStr, JsonElement.class); JsonObject jsonObj = element.getAsJsonObject();
fonte
JsonObject
definição de classe? Vem da biblioteca Gson do Google. Você pode consultar a documentação aqui .A maneira mais simples é usar a
JsonPrimitive
classe, que deriva deJsonElement
, como mostrado abaixo:fonte
Acabei de encontrar o mesmo problema. Você pode escrever um desserializador personalizado trivial para a
JsonElement
classe:fonte
Acredito que esta é uma abordagem mais fácil:
E então você poderá chamá-lo assim:
Dessa forma, todos os objetos de hibernação serão convertidos automaticamente.
fonte
O
JsonParser
construtor foi preterido. Use o método estático:fonte
Me deparei com um cenário com classificação remota de armazenamento de dados no EXTJS 4.X, em que a cadeia é enviada ao servidor como uma matriz JSON (de apenas 1 objeto).
Abordagem semelhante ao que é apresentado anteriormente para uma sequência simples, só precisa da conversão para o JsonArray antes do JsonObject.
String do cliente: [{"property": "COLUMN_NAME", "direction": "ASC"}]
fonte
fonte