【问题标题】:How do I unquote a string with escaped characters?如何取消引用带有转义字符的字符串?
【发布时间】:2016-08-17 14:30:22
【问题描述】:

我有一个奇怪的 json,里面有 striggered json,像这样:

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

我需要读取内部的json,比如:

{ "bar": "bam" }

【问题讨论】:

  • 我正在使用 bash,所以第一次提取是使用 jq

标签: json quotes


【解决方案1】:

似乎也可以在命令行中使用 jq 和 fromjson 内置函数来解决:

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

或使用--raw-output

echo '{ "foo": "{\"bar\": \"bam\"}" }' | jq --raw-output ".foo" | jq "."

【讨论】:

    【解决方案2】:

    这并不“奇怪”。它只是包含另一个 json 字符串的 json。解码父 json,提取 foo 键的值,解码该值,你会得到你的内部 json:

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

    【讨论】:

    • 你说得对,效果很好,我使用 curl 得到了它,并使用 jq 提取了带引号的字符串,这使它变得更加困难,但这样更容易。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-10-27
    • 2019-05-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多