Je n'arrive pas à comprendre cela. J'essaie de manipuler l'arborescence JSON dans GSON, mais j'ai un cas où je ne connais pas ou n'ai pas de POJO pour convertir une chaîne en, avant de convertir en JsonObject
. Existe-t-il un moyen de passer directement de a String
à JsonObject
?
J'ai essayé ce qui suit (syntaxe 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])
mais a
échoue, le JSON est échappé et analysé comme un JsonString
seul, et
b
renvoie un vide JsonObject
.
Des idées?
Réponses:
utiliser JsonParser; par exemple:
la source
new JsonParser().parse(..).getAsJsonObject();
JsonParser.parseString(str).getAsJsonObject()
.Essayez d'utiliser à la
getAsJsonObject()
place d'une distribution directe utilisée dans la réponse acceptée:la source
members
la clé parent. Voici un exemple {"members": {"key1": "13756963814f2c594822982c0307fb81", "key2": true, "key3": 123456789}}JsonObject jsonObj = JsonParser.parseString(str).getAsJsonObject()
ouGson gson = new Gson(); JsonElement element = gson.fromJson (jsonStr, JsonElement.class); JsonObject jsonObj = element.getAsJsonObject();
la source
JsonObject
la définition de classe? Il provient de la bibliothèque Gson de Google. Vous pouvez consulter la documentation ici .Le moyen le plus simple consiste à utiliser la
JsonPrimitive
classe, qui dérive deJsonElement
, comme indiqué ci-dessous:la source
Je viens de rencontrer le même problème. Vous pouvez écrire un désérialiseur personnalisé trivial pour la
JsonElement
classe:la source
Je pense que c'est une approche plus simple:
Et puis vous pourrez l'appeler comme ceci:
De cette façon, tous les objets en veille prolongée seront convertis automatiquement.
la source
Le
JsonParser
constructeur est obsolète. Utilisez plutôt la méthode statique:la source
A rencontré un scénario avec un tri à distance du magasin de données dans EXTJS 4.X où la chaîne est envoyée au serveur sous forme de tableau JSON (d'un seul objet).
Approche similaire à ce qui est présenté précédemment pour une chaîne simple, il suffit de convertir JsonArray avant JsonObject.
Chaîne du client: [{"property": "COLUMN_NAME", "direction": "ASC"}]
la source
la source