使用jq分割有效的JSON文件会导致引号被删除

问题描述 投票:0回答:2

我正在尝试将一个较大的JSON文件(〜4个Mio元素)拆分为单独的文件(每个元素一个文件)。

文件有点像这样:

    {
    "books":
              [
                {
                    "title": "Professional JavaScript - \"The best guide\"",
                    "authors": [
                        "Nicholas C. Zakas"
                    ],
                    "edition": 3,
                    "year": 2011
                },
                {
                    "title": "Professional JavaScript",
                    "authors": [
                        "Nicholas C.Zakas"
                    ],
                    "edition": 2,
                    "year": 2009
                },
                {
                    "title": "Professional Ajax",
                    "authors": [
                        "Nicholas C. Zakas",
                        "Jeremy McPeak",
                        "Joe Fawcett"
                    ],
                    "edition": 2,
                    "year": 2008
                }
              ]
}

说过,我想将每本书分成一个单独的文件,我正在使用以下命令:

cat books.json | jq -c -M '.books[]' | while read line; do echo $line > temp/$(date +%s%N).json; done

对于最后两项,一切正常,因为书名不包含任何引号。但是,在第一个中,\“被替换为”会导致JSON文件损坏,因为后续的解析器-当然-会将“解释为元素的边界。

我尝试使用jq -r,但是没有帮助。

我正在使用CentOS 7附带的jq版本

[root@machine]$ jq --version
jq-1.6

任何建议和非常感谢!

json jq quotes
2个回答
0
投票

您必须对-r使用read选项:


0
投票

非常感谢,成功了!保存了我的一天!

© www.soinside.com 2019 - 2024. All rights reserved.