2016-08-17 8 views
0

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" } 
+0

ich in bash arbeiten, so dass die ersten Extraktion unter Verwendung erfolgt [JQ] (https://stedolan.github.io/jq/) – eloyesp

Antwort

0

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 
+0

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

1

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 "." 
Verwandte Themen