给出两个json文件,如下所示:
{
"items": [
{
"name": "Item 1"
},
{
"name": "Item 2"
},
{
"name": "Item 3"
}
]
}
这:
[
"Item 1 translated",
"Item 2 translated",
"Item 3 translated"
]
-是否可以将后者用作前者的补丁?这样最终结果将如下所示:
{
"items": [
{
"name": "Item 1 translated"
},
{
"name": "Item 2 translated"
},
{
"name": "Item 3 translated"
}
]
}
一个用例。想象一个需要本地化的巨大json文件。我们可以只导出要转换为CSV的数据,然后在电子表格中对其进行编辑,然后再导出回json。然后我们可以将其用作原始json的补丁。
答案 0 :(得分:1)
简而言之:
$ jq -s -f patch.jq object.json array.json
其中patch.jq包含:
.[1] as $array
| .[0]
| .items |= reduce range(0;length) as $i (.;
.[$i].name = $array[$i])
很长一段时间:上面有许多替代方法,但是使用“ -s”命令行选项的优点是它可以与所有版本的jq一起使用,并且不需要bash-magic。
与其使用数组作为字典,不如使用字典,即JSON对象,可能会更好。例如,在当前情况下,可以按照以下方式构建字典:
{"Item1": "Item 1 translated", ...}
当然要考虑利弊,但是如果您担心键为混合类型(例如"1"
和1
)的情况,则可以考虑使用字典词典,例如遵循以下原则:
{ "string": {"1": "one}, "number": {"1": 1} }