json jq为每个对象/数组添加相同的元素

时间:2015-12-10 09:21:33

标签: json jq

我有像这样的json结构的文件:

[
  {
    "uid": 11111,
    "something": {
        (...)
    }
  },
  {
    "uid": 22222,
    "something": {
        (...)
    }
  }
]

我一次读取所有文件(cat *),我想知道哪个部分来自哪个文件,所以我需要以某种方式对它进行分组。

所以,我的想法是将每个文件的内容移动到具有自己成员的更高(父)对象。

[
  {
  "var1": "val1"
  "var2": "val2"
    {
      "uid": 11111,
      "something": {
            (...)
      }
    },
    {
      "uid": 22222,
      "something": {
            (...)
      }
    }
  }

如何用jq做到这一点?

1 个答案:

答案 0 :(得分:0)

#!/bin/bash

# For simplicity, assume each file in FILELIST contains a single JSON entity.
# Then instead of using cat FILELIST, use mycat FILELIST, e.g. mycat *.json

function mycat {
  for file
  do
    jq --arg file "$file" '{"file": $file, "contents": .}' "$file"
  done
}

如果你有一个足够新的jq版本(例如jq 1.5),那么一个替代方案是:

jq '{file: input_filename, contents: .}' FILELIST