jq - 如何以正确的顺序打印JSON数组的整个索引,而不是一个接一个地打印所有特定字段?

时间:2016-09-27 13:47:28

标签: json jq

我有以下JSON:

{
  "family_name": "The Brown Family",
  "members": [
    {
      "name": "James",
      "age": 42
    },  
    {
      "name": "Sarah",
      "age": 43,
    }
  ]
}
{
  "family_name": "The Smith Family",
  "members": [
    {
      "name": "Thomas",
      "age": 32
    },  
    {
      "name": "Jane",
      "age": 30,
    }
  ]
} 

我想打印每个家庭的姓氏,然后在此打印后,包含在'成员中的每个索引。我在JQ中尝试了以下内容。

echo $myJson | jq -r '"\("Family Name: ") \(.family_name)", "\("Member Name: ") \(.members[].name)", "\("Age: ") \(.members[].age)", "\n"'

我希望这会打印以下内容:

Family Name: The Brown Family   
Member Name: James
Age: 42
Member Name: Sarah
Age: 43

Family Name: The Smith Family
Member Name: Thomas
Age: 32
Member Name: Jane
Age: 30

然而,它打印:

Family Name: The Brown Family   
Member Name: James
Member Name: Sarah
Age: 42
Age: 43

Family Name: The Smith Family
Member Name: Thomas
Member Name: Jane
Age: 32
Age: 30

如何更改我的jq脚本以正确的顺序生成正确的输出?感谢。

1 个答案:

答案 0 :(得分:2)

您可以使用以下命令:

jq -r '"Family Name: \(.family_name)",(.members[]|"Member Name: \(.name)","Age: \(.age)")' file.json
相关问题