如何将 json 中的数组提取到单独的 txt 文件

如何将 json 中的数组提取到单独的 txt 文件

我有一个 .json 文件,需要将 SliceTiming 字段提取到单独的 txt 文件中。我无法使用jq。如果可以的话,我的命令是

jq .SliceTiming[] *.json

这是 .json 文件

{
"EchoTime": 0.033,
"RepetitionTime": 0.75,
"EffectiveEchoSpacing": 0.0005,
"SliceTiming": [
    0.51,
    0,
    0.365,
    0.0725,
    0.4375,
    0.2175,
    0.5825,
    0.2925,
    0.6575,
    0.145,
    0.51,
    0,
    0.365,
    0.0725,
    0.4375,
    0.2175,
    0.5825,
    0.2925,
    0.6575,
    0.145,
    0.51,
    0,
    0.365,
    0.0725,
    0.4375,
    0.2175,
    0.5825,
    0.2925,
    0.6575,
    0.145,
    0.51,
    0,
    0.365,
    0.0725,
    0.4375,
    0.2175,
    0.5825,
    0.2925,
    0.6575,
    0.145,
    0.51,
    0,
    0.365,
    0.0725,
    0.4375,
    0.2175,
    0.5825,
    0.2925,
    0.6575,
    0.145,
    0.51,
    0,
    0.365,
    0.0725,
    0.4375,
    0.2175,
    0.5825,
    0.2925,
    0.6575,
    0.145   ],
"PhaseEncodingDirection": "j-"}

答案1

看来 python 是允许的。这将是我的首选解决方案。

我对处理 sed、grep、awk 感到不舒服,因为我不知道数据的边缘情况。

使用 , 将数组打印到标准输出

cat data.json | python -c "import sys, json; print json.load(sys.stdin)['SliceTiming']"

笔记:此示例使用 python2.7,不太可能与 python3.x 一起使用

只是输出值。不,[],

创建是slice_out.py因为我找不到执行内联终端的好方法

import sys, json
slice_data = json.load(sys.stdin)['SliceTiming']
for s in slice_data: print s

跑与cat data.json | python slice_out.py

答案2

使用 Perl 和 JSON 模块:

perl -MJSON -e 'print join("\n", @{decode_json(join("\n",<>))->{"SliceTiming"}})' <file.json

这将在单独的行上输出每个数字,不带逗号

相关内容