Carte de la Chaîne/Chaîne à la Carte de conversion en Groovy
J'ai un objet json qui est passée dans une fonction de sauvegarde comme
{
"markings": {
"headMarkings": "Brindle",
"leftForeMarkings": "",
"rightForeMarkings": "sock",
"leftHindMarkings": "sock",
"rightHindMarkings": "",
"otherMarkings": ""
}
** EDIT **
Le système analyse et transmet à ma fonction d'une cartographie. Je n'ai pas vraiment avoir le JSON, bien qu'il ne serait pas difficile de construire le JSON moi-même, il semble juste comme overkill
* FIN EDIT **
La toString()
fonction finit par mettre les résultats dans la base de données
"[rightForeMarkings:, otherMarkings:, leftForeMarkings:sock, leftHindMarkings:sock, rightHindMarkings:, headMarkings:brindle]"
Je veux la sauver que comme une chaîne de caractères (assez facile), en appelant
params.markings.toString()
D'ici, j'ai enregistrer l'information et de retour d'information mise à jour.
Mon problème est que depuis que je suis le stockage de l'objet dans la base de données comme un string, je n'arrive pas à obtenir le marquage de retour comme une carte (pour ensuite être converti en JSON).
J'ai essayé plusieurs choses différentes en vain, mais il est tout à fait possible que je suis allé à propos de quelque chose incorrectlywith ces...
Eval.me(Item.markings)
evaluate(Item.markings)
Item.markings.toList()
Merci d'avance pour l'aide!
JsonSlurper
. Cette répondre devrait aider.JsonSlurper peut travailler. Ce n'est pas la solution idéale pour notre implémentation, mais je pense que je vais lui donner un aller et vous laisser savoir ce qui finit par arriver.
On dirait que vous n'êtes pas la persistance de la chaîne de manière appropriée. Je suis en train de tester quelques petites choses pour vous, vous permettra de connaître les résultats.
OriginalL'auteur David Ziemann | 2013-07-12
Vous devez vous connecter pour publier un commentaire.
Jeter mes tests.
JSON à l'aide de convertisseurs Graal, je pense que ce devrait être l'approche: (synonyme de @JamesKleeh et @GrailsGuy)
Où obtenez-vous votre base objet json qui est transmis à la méthode? Avez-vous une chaîne json ou d'un objet, d'abord, avant d'appliquer tout type de logique? @DavidZiemann
J'ai un objet. Toutes mes excuses. J'aurais du fait qu'apparente dans ma question initiale. Si je me déconnecte, marques c'est le même que celui de votre jsonObj. Il semble que j'ai été en mesure d'obtenir le vôtre travail (encore en train de faire un peu de tests). Je vais vous faire connaître les résultats 🙂
Merci pour le résultat d'ensemble. Il a travaillé très bien. J'ai dû modifier un cheveu, mais c'est dû à l'architecture de notre système, et non pas votre code.
Heureux, il a aidé. Je viens de guidage sur la tenue de l'arc et la flèche, oeil de taureaux a été indiqué par JamesKleeh et GrailsGuy. 😉
OriginalL'auteur dmahapatro
Si je comprends bien, vous souhaitez convertir une Chaîne de caractères dans un objet JSON? Vous pouvez le contourner en la convertissant en une carte, et d'analyser directement comme un objet JSON:
Cela vous donnera l'ensemble de votre objet JSON, et alors vous pouvez simplement faire référence aux valeurs comme vous le feriez avec une carte.
render Item as JSON
quand je rentre les données. Je suppose que la même chose queJSON.parse(Item)
, ou je me trompe?Ouais ils sont assez similaires, mais vous n'êtes pas en train d'essayer de rendre le JSON, droit? Juste obtenir une référence à elle?
Pour être honnête, je ne suis pas sûr de la différence. il fait partie d'une API, et je l'envelopper dans un withFormat{JSON{}} la syntaxe. Je suis assez nouveau graal/groovy si vous ne pouvez pas dire 🙂
pourrait-il avoir quelque chose à voir avec la façon dont
toString()
convertit la carte? J'ai mis à jour la question d'inclure la chaîne qui est stocké dans la base de donnéesOriginalL'auteur Igor
Edit #2:
Donc, apparemment, il n'y a pas de "sécurité" façon de convertir cette chaîne à une carte sans quelque chose de personnalisé. Je voudrais vous recommandons d'enregistrer la structure de la base de données comme il est originaire. Si vous pouvez faire cela, alors tout ce que vous avez besoin est
JSON.parse()
JSON.parse()
, j'ai une erreur quand il arrive à la première,
après un item vide (c'est à dire: headMarkings)Voir mon post édité
OriginalL'auteur James Kleeh