Ich habe eine seltsame json mit strigified jsons innen, wie folgt aus:Wie entferne ich eine Zeichenfolge mit Escapezeichen?
{ "foo": "{\"bar\": \"bam\"}" }
Ich brauche die interne json zu lesen, wie:
{ "bar": "bam" }
Ich habe eine seltsame json mit strigified jsons innen, wie folgt aus:Wie entferne ich eine Zeichenfolge mit Escapezeichen?
{ "foo": "{\"bar\": \"bam\"}" }
Ich brauche die interne json zu lesen, wie:
{ "bar": "bam" }
Es ist nicht "weird". Es ist nur JSON mit einer anderen JSON-Zeichenfolge. Dekodieren die Eltern json, extrahieren den Wert des foo
Schlüssel dekodieren diesen Wert, und Sie werden Ihre innere json erhalten:
orig = "{ \"foo\": \"{\\"bar\\": \\"bam\\"}\" }";
data = JSON.parse(orig);
foo = data.foo;
subdata = JSON.parse(foo);
alert(subdata.bar); // bam
Sie haben Recht, das funktioniert perfekt, ich habe das mit curl und extrahiert die zitierte Zeichenfolge mit jq, und das machte es schwieriger, aber es ist einfacher so. – eloyesp
Es scheint, dass es auch in der Befehlszeile gelöst werden unter Verwendung von jq mit der fromjson
builtin:
echo '{ "foo": "{\"bar\": \"bam\"}" }' | jq ".foo | fromjson"
oder mit --raw-output
echo '{ "foo": "{\"bar\": \"bam\"}" }' | jq --raw-output ".foo" | jq "."
ich in bash arbeiten, so dass die ersten Extraktion unter Verwendung erfolgt [JQ] (https://stedolan.github.io/jq/) – eloyesp