【发布时间】:2020-07-08 14:19:59
【问题描述】:
我有一个json数据如下。
{
"Data":
[
"User": [
{"Name": "Solomon", "Age":20},
{"Name": "Absolom", "Age":30},
]
"Country": [
{"Name" : "US", "Resident" : "Permanent"},
{"Name" : "UK", "Resident" : "Temporary"}
]]}
有两个标签具有相同的键,
在Users 中有Name 键,在Country 中我也有Name 键。我需要预处理 json 文件以区分密钥。我的预期结果如下。尝试通过 awk 和 sed 命令,但我找不到合适的解决方案。任何建议都会有所帮助。
预期结果:
{
"Data":
[
"User": [
{"User_Name": "Solomon", "User_Age":20},
{"User_Name": "Absolom", "User_Age":30},
]
"Country": [
{"Country_Name" : "US", "Country_Resident" : "Permanent"},
{"Country_Name" : "UK", "Country_Resident" : "Temporary"}
]]}
标签名称应附加到属性名称。
这是我尝试过的,
jq '[.[] | .["User_Name"] = .Name]' file_name.json
但是User 和Country 这两个标签都会发生变化
【问题讨论】:
-
您的示例是无效的 JSON 值。
-
它是一个有效的 Json 文件,并且有我的数据集。
-
json数组也可以有键值对,例如w3schools.com/js/js_json_arrays.asp
-
有人会为您提供 jq 解决方案,而在这里我可以为您提供基于
jtc的:<file.json jtc -tc -w'<Data>l[:]<L>k<.*>L:<>k' -u'"{L}_{}";'- 这是输入不变的解决方案。 PS。我是jtcunix 工具的创建者。 -
哦,太好了。能详细解释一下吗