J'ai un JSON bizarre avec jsons strigified à l'intérieur, comme celui-ci:Comment est-ce que je désintègre une chaîne avec des caractères échappés?
{ "foo": "{\"bar\": \"bam\"}" }
J'ai besoin de lire le JSON interne, comme:
{ "bar": "bam" }
J'ai un JSON bizarre avec jsons strigified à l'intérieur, comme celui-ci:Comment est-ce que je désintègre une chaîne avec des caractères échappés?
{ "foo": "{\"bar\": \"bam\"}" }
J'ai besoin de lire le JSON interne, comme:
{ "bar": "bam" }
Ce n'est pas "bizarre". C'est juste json contenant une autre chaîne JSON. Décoder le JSON mère, extraire la valeur de la foo
clé, décoder cette valeur, et vous obtiendrez votre JSON intérieure:
orig = "{ \"foo\": \"{\\"bar\\": \\"bam\\"}\" }";
data = JSON.parse(orig);
foo = data.foo;
subdata = JSON.parse(foo);
alert(subdata.bar); // bam
Vous avez raison, cela fonctionne parfaitement, je l'ai obtenu en utilisant curl et extrait la chaîne citée en utilisant jq, et cela a rendu plus difficile, mais c'est plus facile de cette façon. – eloyesp
Il semble qu'il peut être résolu en utilisant dans la ligne de commande JQ avec le fromjson
builtin:
echo '{ "foo": "{\"bar\": \"bam\"}" }' | jq ".foo | fromjson"
ou en utilisant --raw-output
echo '{ "foo": "{\"bar\": \"bam\"}" }' | jq --raw-output ".foo" | jq "."
Je travaille en bash, donc la première extraction a été effectuée à l'aide [JQ] (https://stedolan.github.io/jq/) – eloyesp