是否有一些公认的使用 bash 和 jq 生成 JSON 文档的“最佳实践”?我有一个脚本来收集各种数据,并更容易使用其他工具进一步处理,我想以 JSON 格式输出数据。因此,我使用 jq 来确保所有引用等都正确完成,如本答案中所建议的:https://stackoverflow.com/a/48470227/75652 。然而,我正在努力解决如何逐步生成它而不是最后一个巨大的 jq 调用。例如。类似的东西
read foo <<<$(</path/to/some/oneliner/file)
jq -n --arg f $foo '{foo: $f}'
bar=$(some_command)
jq -n --arg b $bar '{bar: $b}'
将生成两个单独的对象(可以使用支持各种或多或少非正式的“JSON流”格式的工具进行处理,包括jq),而我想要一个对象,例如
{ "foo": SOMETHING, "bar": SOMETHING_ELSE }
但我无法通过多个 jq 调用来做到这一点,因为 jq 会提示不完整的 JSON 格式错误。
为了进一步增加一些复杂性,在某些情况下我需要生成嵌套的 JSON 结构。在像 python 这样的另一种语言中,我只是将所有数据放入一组嵌套字典中,然后最后将其转储为 JSON,但 bash 中的嵌套字典似乎非常乏味..
最佳答案
您可以为下一个 jq 命令保存和处理中间 JSON:
#!/usr/bin/env bash
read -r foo <a.txt
json="$(jq -n --arg f "$foo" '{foo: $f}')"
bar="$(pwd)"
jq -n --arg b "$bar" "$json"'+{bar: $b}'
# or alternatively
jq --arg b "$bar" '.bar=$b' <<<"$json"
关于json - 如何从 bash 重复调用 jq 增量生成 JSON?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69410606/