2016-08-17 4 views
0

У меня есть странное с JSON strigified jsons внутри, как это:Как удалить строку с экранированными символами?

{ "foo": "{\"bar\": \"bam\"}" } 

мне нужно прочитать внутреннюю JSON, например:

{ "bar": "bam" } 
+0

Я работаю в Баше, так что первая добыча была выполнена с использованием [JQ] (https://stedolan.github.io/jq/) – eloyesp

ответ

0

Это не "странно". Это просто json, содержащий другую строку json. Расшифруйте родительский JSON, извлечь значение ключа foo, декодировать значение, и вы получите ваш внутренний JSON:

orig = "{ \"foo\": \"{\\"bar\\": \\"bam\\"}\" }"; 
data = JSON.parse(orig); 
foo = data.foo; 
subdata = JSON.parse(foo); 
alert(subdata.bar); // bam 
+0

Вы правы, это работает отлично, я получил это, используя curl, и извлек строку с кавычками, используя jq, и это усложнило работу, но это проще. – eloyesp

1

кажется, что она может быть решена в командной строке с помощью JQ с fromjson встроенные:

echo '{ "foo": "{\"bar\": \"bam\"}" }' | jq ".foo | fromjson" 

или с помощью --raw-output

echo '{ "foo": "{\"bar\": \"bam\"}" }' | jq --raw-output ".foo" | jq "." 
Смежные вопросы