В следующем примере ввода:
{"contacts":{"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"}]}}
{"contacts":{"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, с которым я работаю. безрезультатно ...
jq --slurp '.[] | .[].fields[].id |= tonumber | .[].orgid |= tonumber | {contacts: [.[]| {orgid: .["orgid"],email: .["email"],first_name: .["first_name"],last_name: .["last_name"],phone: .["phone"],tags:[ .["tags"]],fields}]}'
Он оборачивает каждую строку ввода в массив «контактов», как показано ниже ...
{
"contacts": [
{
"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"
}
]
}
]
}
{
"contacts": [
{
"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"
}
]
}
]
}
... Но мне это нужно вот так (1 массив "contacts", содержащий все отфильтрованные входные строки) ...
{
"contacts": [
{
"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"
}
]
},
{
"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"
}
]
}
]
}