【发布时间】:2016-08-17 14:30:22
【问题描述】:
我有一个奇怪的 json,里面有 striggered json,像这样:
{ "foo": "{\"bar\": \"bam\"}" }
我需要读取内部的json,比如:
{ "bar": "bam" }
【问题讨论】:
-
我正在使用 bash,所以第一次提取是使用 jq
我有一个奇怪的 json,里面有 striggered json,像这样:
{ "foo": "{\"bar\": \"bam\"}" }
我需要读取内部的json,比如:
{ "bar": "bam" }
【问题讨论】:
似乎也可以在命令行中使用 jq 和 fromjson 内置函数来解决:
echo '{ "foo": "{\"bar\": \"bam\"}" }' | jq ".foo | fromjson"
或使用--raw-output
echo '{ "foo": "{\"bar\": \"bam\"}" }' | jq --raw-output ".foo" | jq "."
【讨论】:
这并不“奇怪”。它只是包含另一个 json 字符串的 json。解码父 json,提取 foo 键的值,解码该值,你会得到你的内部 json:
orig = "{ \"foo\": \"{\\"bar\\": \\"bam\\"}\" }";
data = JSON.parse(orig);
foo = data.foo;
subdata = JSON.parse(foo);
alert(subdata.bar); // bam
【讨论】: