使用以下输入示例:
[
{
"orgid": "1",
"email": "janedoe@aol.com",
"first_name": "Jane",
"last_name": "Doe",
"phone": "4045551212",
"tags": [
"tag1",
"tag2"
],
"fields": [
{
"id": "2",
"value": "IB4220"
},
{
"id": "3",
"value": "1994-05-18"
},
{
"id": "12",
"value": "CONSULTANT"
},
{
"id": "13",
"value": "janedoe@aol.com"
},
{
"id": "6",
"value": "111 Main Blvd"
},
{
"id": "7",
"value": "Babylon"
},
{
"id": "8",
"value": "NY"
},
{
"id": "9",
"value": "11702-1522"
},
{
"id": "10",
"value": "US"
},
{
"id": "11",
"value": ""
},
{
"id": "5",
"value": "http://www.something.com/janedoe"
}
]
}
]
我正在尝试使用jq的“ tonumber”功能将“ id”字段转换为数字。
这是我正在使用的jq过滤器,无济于事...
.[] | {contacts:[.[] | {orgid: .["orgid"],email: .["email"],first_name: .["first_name"],last_name: .["last_name"],phone: .["phone"],tags: .["tags"],fields: [{id: .fields[].id|tonumber, value: .fields[].value}]}]}
它将字段转换为数字;但会产生以下不良结果(记录重复多次)。
{
"contacts": [
{
"orgid": "1",
"email": "janedoe@aol.com",
"first_name": "Jane",
"last_name": "Doe",
"phone": "4045551212",
"tags": [
"tag1",
"tag2"
],
"fields": [
{
"id": 2,
"value": "IB4220"
},
{
"id": 2,
"value": "1994-05-18"
},
{
"id": 2,
"value": "CONSULTANT"
},
{
"id": 2,
"value": "janedoe@aol.com"
},
{
"id": 2,
"value": "111 Main Blvd"
},
{
"id": 2,
"value": "Babylon"
},
{
"id": 2,
"value": "NY"
},
{
"id": 2,
"value": "11702-1522"
},
{
"id": 2,
"value": "US"
},
{
"id": 2,
"value": ""
},
{
"id": 2,
"value": "http://www.something.com/janedoe"
},
{
"id": 3,
"value": "IB4220"
},
{
"id": 3,
"value": "1994-05-18"
},
{
"id": 3,
"value": "CONSULTANT"
},
{
"id": 3,
"value": "janedoe@aol.com"
},
{
"id": 3,
"value": "111 Main Blvd"
},
{
"id": 3,
"value": "Babylon"
},
{
"id": 3,
"value": "NY"
},
{
"id": 3,
"value": "11702-1522"
},
{
"id": 3,
"value": "US"
},
{
"id": 3,
"value": ""
},
{
"id": 3,
"value": "http://www.something.com/janedoe"
},
{
"id": 12,
"value": "IB4220"
},
{
"id": 12,
"value": "1994-05-18"
},
{
"id": 12,
"value": "CONSULTANT"
},
{
"id": 12,
"value": "janedoe@aol.com"
},
{
"id": 12,
"value": "111 Main Blvd"
},
{
"id": 12,
"value": "Babylon"
},
{
"id": 12,
"value": "NY"
},
{
"id": 12,
"value": "11702-1522"
},
{
"id": 12,
"value": "US"
},
{
"id": 12,
"value": ""
},
{
"id": 12,
"value": "http://www.something.com/janedoe"
},
{
"id": 13,
"value": "IB4220"
},
{
"id": 13,
"value": "1994-05-18"
},
{
"id": 13,
"value": "CONSULTANT"
},
{
"id": 13,
"value": "janedoe@aol.com"
},
{
"id": 13,
"value": "111 Main Blvd"
},
{
"id": 13,
"value": "Babylon"
},
{
"id": 13,
"value": "NY"
},
{
"id": 13,
"value": "11702-1522"
},
{
"id": 13,
"value": "US"
},
{
"id": 13,
"value": ""
},
{
"id": 13,
"value": "http://www.something.com/janedoe"
},
{
"id": 6,
"value": "IB4220"
},
{
"id": 6,
"value": "1994-05-18"
},
{
"id": 6,
"value": "CONSULTANT"
},
{
"id": 6,
"value": "janedoe@aol.com"
},
{
"id": 6,
"value": "111 Main Blvd"
},
{
"id": 6,
"value": "Babylon"
},
{
"id": 6,
"value": "NY"
},
{
"id": 6,
"value": "11702-1522"
},
{
"id": 6,
"value": "US"
},
{
"id": 6,
"value": ""
},
{
"id": 6,
"value": "http://www.something.com/janedoe"
},
{
"id": 7,
"value": "IB4220"
},
{
"id": 7,
"value": "1994-05-18"
},
{
"id": 7,
"value": "CONSULTANT"
},
{
"id": 7,
"value": "janedoe@aol.com"
},
{
"id": 7,
"value": "111 Main Blvd"
},
{
"id": 7,
"value": "Babylon"
},
{
"id": 7,
"value": "NY"
},
{
"id": 7,
"value": "11702-1522"
},
{
"id": 7,
"value": "US"
},
{
"id": 7,
"value": ""
},
{
"id": 7,
"value": "http://www.something.com/janedoe"
},
{
"id": 8,
"value": "IB4220"
},
{
"id": 8,
"value": "1994-05-18"
},
{
"id": 8,
"value": "CONSULTANT"
},
{
"id": 8,
"value": "janedoe@aol.com"
},
{
"id": 8,
"value": "111 Main Blvd"
},
{
"id": 8,
"value": "Babylon"
},
{
"id": 8,
"value": "NY"
},
{
"id": 8,
"value": "11702-1522"
},
{
"id": 8,
"value": "US"
},
{
"id": 8,
"value": ""
},
{
"id": 8,
"value": "http://www.something.com/janedoe"
},
{
"id": 9,
"value": "IB4220"
},
{
"id": 9,
"value": "1994-05-18"
},
{
"id": 9,
"value": "CONSULTANT"
},
{
"id": 9,
"value": "janedoe@aol.com"
},
{
"id": 9,
"value": "111 Main Blvd"
},
{
"id": 9,
"value": "Babylon"
},
{
"id": 9,
"value": "NY"
},
{
"id": 9,
"value": "11702-1522"
},
{
"id": 9,
"value": "US"
},
{
"id": 9,
"value": ""
},
{
"id": 9,
"value": "http://www.something.com/janedoe"
},
{
"id": 10,
"value": "IB4220"
},
{
"id": 10,
"value": "1994-05-18"
},
{
"id": 10,
"value": "CONSULTANT"
},
{
"id": 10,
"value": "janedoe@aol.com"
},
{
"id": 10,
"value": "111 Main Blvd"
},
{
"id": 10,
"value": "Babylon"
},
{
"id": 10,
"value": "NY"
},
{
"id": 10,
"value": "11702-1522"
},
{
"id": 10,
"value": "US"
},
{
"id": 10,
"value": ""
},
{
"id": 10,
"value": "http://www.something.com/janedoe"
},
{
"id": 11,
"value": "IB4220"
},
{
"id": 11,
"value": "1994-05-18"
},
{
"id": 11,
"value": "CONSULTANT"
},
{
"id": 11,
"value": "janedoe@aol.com"
},
{
"id": 11,
"value": "111 Main Blvd"
},
{
"id": 11,
"value": "Babylon"
},
{
"id": 11,
"value": "NY"
},
{
"id": 11,
"value": "11702-1522"
},
{
"id": 11,
"value": "US"
},
{
"id": 11,
"value": ""
},
{
"id": 11,
"value": "http://www.something.com/janedoe"
},
{
"id": 5,
"value": "IB4220"
},
{
"id": 5,
"value": "1994-05-18"
},
{
"id": 5,
"value": "CONSULTANT"
},
{
"id": 5,
"value": "janedoe@aol.com"
},
{
"id": 5,
"value": "111 Main Blvd"
},
{
"id": 5,
"value": "Babylon"
},
{
"id": 5,
"value": "NY"
},
{
"id": 5,
"value": "11702-1522"
},
{
"id": 5,
"value": "US"
},
{
"id": 5,
"value": ""
},
{
"id": 5,
"value": "http://www.something.com/janedoe"
}
]
}
]
}
所需结果:
[
{
"orgid": "1",
"email": "janedoe@aol.com",
"first_name": "Jane",
"last_name": "Doe",
"phone": "4045551212",
"tags": [
"tag1",
"tag2"
],
"fields": [
{
"id": 2,
"value": "IB4220"
},
{
"id": 3,
"value": "1994-05-18"
},
{
"id": 12,
"value": "CONSULTANT"
},
{
"id": 13,
"value": "janedoe@aol.com"
},
{
"id": 6,
"value": "111 Main Blvd"
},
{
"id": 7,
"value": "Babylon"
},
{
"id": 8,
"value": "NY"
},
{
"id": 9,
"value": "11702-1522"
},
{
"id": 10,
"value": "US"
},
{
"id": 11,
"value": ""
},
{
"id": 5,
"value": "http://www.something.com/janedoe"
}
]
}
]
答案 0 :(得分:3)
这将产生您的预期输出:
.[].fields[].id |= tonumber
|=
采用路径.[].fields[].id
扩展到tonumber
并将其应用到其值。