【发布时间】:2019-01-02 02:15:40
【问题描述】:
我在从 JSON 获取数据时遇到问题:
{
"operations": [
{
"operationName": "GetValue",
"batch_size": "2",
"orders": [
{
"clientId": "7836",
"validation_time": {
"place": "136",
"execute": "5379"
}
},
{
"clientId": "7837",
"validation_time": {
"place": "145",
"execute": "5401"
}
}
]
},
{
"operationName": "GetValue",
"batch_size": "3",
"orders": [
{
"clientId": "7838",
"validation_time": {
"place": "122",
"execute": "5201"
}
},
{
"clientId": "7839",
"validation_time": {
"place": "122",
"execute": "5201"
}
},
{
"clientId": "7840",
"validation_time": {
"place": "122",
"execute": "5201"
}
}
]
}
]
}
因此,我想获取每个订单的信息,包括 clientId 作为键,place_validation_time 和 execute_validation_time 每个订单。我尝试了以下方法:
.operations[] | select(.operationName=="GetValue") | {key: .orders[].clientId, place_validation_time: .orders[].validation_time.place, execute_validation_time: .orders[].validation_time.execute, batch_size: .batch_size}
但它对我来说有一个意想不到的结果,它将所有 clientId 与validation_time.place 和validation_time.execute 的所有变体结合在一起,所以我得到了4 个(对于batch_size=2)而不是每个订单1 个对象,例如 预期:
{
"key": "7836",
"place_validation_time": "136",
"execute_validation_time": "5379",
"batch_size": "2"
}
实际我有:
{
"key": "7836",
"place_validation_time": "136",
"execute_validation_time": "5379",
"batch_size": "2"
}
{
"key": "7836",
"place_validation_time": "136",
"execute_validation_time": "5401",
"batch_size": "2"
}
{
"key": "7836",
"place_validation_time": "145",
"execute_validation_time": "5379",
"batch_size": "2"
}
{
"key": "7836",
"place_validation_time": "145",
"execute_validation_time": "5401",
"batch_size": "2"
}
有人知道如何避免它并因此每 1 个订单获得 1 个对象吗?
【问题讨论】:
标签: arrays json scope nested jq