как получить вложенные значения JSON в машинописи - PullRequest
1 голос
/ 23 декабря 2019

Я пытаюсь получить все значения параметров состояние для каждого идентификатора - 2434,78657 . Пожалуйста, помогите мне, как это сделать в машинописном тексте. Так как это вложенный JSONЯ не могу получить эти значения

Запрос JSON :

                        { 
                           "2434":[ 
                              { 
                                 "eventId":"90989",
                                 "eventTime":"2019-12-11T11:20:53+04:00",
                                 "eventType":"yyyy",
                                 "event":{ 
                                    "ServiceOrder":{  
                                        "priority":"1",
                                       "state":"InProgress"}
                                 }
                              },
                              { 
                                 "eventId":"6576",
                                 "eventTime":"2019-12-11T11:20:53+04:00",
                                 "eventType":"yyyy",
                                 "event":{ 
                                    "ServiceOrder":{ 
                                       "priority":"1",
                                       "state":"InProgress"
                                    }
                                 }
                              },
                              { 
                                 "eventId":"6576",
                                 "eventTime":"2019-12-11T11:20:53+04:00",
                                 "eventType":"yyyy",
                                 "event":{ 
                                    "ServiceOrder":{ 
                                       "priority":"1",
                                       "state":"Pending"
                                    }
                                 }
                              }
                           ],
                           "78657":[ 
                              { 
                                 "eventId":"6576",
                                 "eventTime":"2019-12-11T11:20:53+04:00",
                                 "eventType":"yyyy",
                                 "event":{ 
                                    "ServiceOrder":{ 
                                       "priority":"1",
                                       "state":"Pending"
                                    }
                                 }
                              },
                              { 
                                 "eventId":"6576",
                                 "eventTime":"2019-12-11T11:20:53+04:00",
                                 "eventType":"yyyy",
                                 "event":{ 
                                    "ServiceOrder":{ 
                                       "priority":"1",
                                       "state":"Completed"
                                    }
                                 }
                              },
                              { 
                                 "eventId":"6576",
                                 "eventTime":"2019-12-11T11:20:53+04:00",
                                 "eventType":"yyyy",
                                 "event":{ 
                                    "ServiceOrder":{ 
                                       "priority":"1",
                                       "state":"Failed"
                                    }
                                 }
                              }
                           ]
                        }

Желаемый результат:

Например, для идентификатора 2434, массив свсе значения параметров состояния должны быть возвращены.

[InProgress, InProgress, Pending]

Ответы [ 2 ]

3 голосов
/ 23 декабря 2019

Вот ваш требуемый ответ,

Этот ответ made dynamic, так что вы можете отправить любое количество ключей в ваших Object и он по-прежнему возвращает значение состояния всех ключей путем вложенного цикла.

Кусок кода, который делает магию для вас,

let object = {};
for (let key of Object.keys(test)) { 
    for (let value of test[key]) { 
        object[key] = object[key] || []
        object[key].push(value['event']['ServiceOrder']['state']
        )
     } 
 } 

Выполнение кода:

let test = {
"2434":[
{ 
    "eventId":"90989",
    "eventTime":"2019-12-11T11:20:53+04:00",
    "eventType":"yyyy",
    "event":{ 
    "ServiceOrder":{  
        "priority":"1",
        "state":"InProgress"}
    }
},
{ 
    "eventId":"6576",
    "eventTime":"2019-12-11T11:20:53+04:00",
    "eventType":"yyyy",
    "event":{ 
    "ServiceOrder":{ 
        "priority":"1",
        "state":"InProgress"
    }
    }
},
{ 
    "eventId":"6576",
    "eventTime":"2019-12-11T11:20:53+04:00",
    "eventType":"yyyy",
    "event":{ 
    "ServiceOrder":{ 
        "priority":"1",
        "state":"Pending"
    }
    }
}
],
"78657":[ 
{ 
    "eventId":"6576",
    "eventTime":"2019-12-11T11:20:53+04:00",
    "eventType":"yyyy",
    "event":{ 
    "ServiceOrder":{ 
        "priority":"1",
        "state":"Pending"
    }
    }
},
{ 
    "eventId":"6576",
    "eventTime":"2019-12-11T11:20:53+04:00",
    "eventType":"yyyy",
    "event":{ 
    "ServiceOrder":{ 
        "priority":"1",
        "state":"Completed"
    }
    }
},
{ 
    "eventId":"6576",
    "eventTime":"2019-12-11T11:20:53+04:00",
    "eventType":"yyyy",
    "event":{ 
    "ServiceOrder":{ 
        "priority":"1",
        "state":"Failed"
    }
    }
}
]
}
let object = {};
for (let key of Object.keys(test)) { 
    for (let value of test[key]) { 
        object[key] = object[key] || []
        object[key].push(
            value['event']['ServiceOrder']['state']
        )
     } 
 } 
console.log(object);

Пожалуйста, запустите приведенный выше фрагмент

Вот O / P:

{"2434 ": [" InProgress "," InProgress "," Pending "]," 78657 ": [" Pending "," Completed "," Failed "]}

Вот рабочая ДЕМО

0 голосов
/ 23 декабря 2019

отметьте здесь, здесь вы должны передать конкретный идентификатор (пример 2434), из которого вам нужен статус. Просто передайте идентификатор, и он вернет статус в виде массива.


function getStatusFromId(id: number){
  return new Promise((resolve, reject) => {
    let idObject = NotificationData[id];
    let arrayOfStatus = new Array();
    idObject.forEach((data) => {
      arrayOfStatus.push(data.event.ServiceOrder["**state**"])
    })
    resolve(arrayOfStatus);
  })
}


getStatusFromId(id)
.then((data) => {
  console.log(data)
});
let NotificationData = { 
                       "2434":[ 
                          { 
                             "eventId":"90989",
                             "eventTime":"2019-12-11T11:20:53+04:00",
                             "eventType":"yyyy",
                             "event":{ 
                                "ServiceOrder":{  
                                    "priority":"1",
                                   "**state**":"InProgress"}
                             }
                          },
                          { 
                             "eventId":"6576",
                             "eventTime":"2019-12-11T11:20:53+04:00",
                             "eventType":"yyyy",
                             "event":{ 
                                "ServiceOrder":{ 
                                   "priority":"1",
                                   "**state**":"InProgress"
                                }
                             }
                          },
                          { 
                             "eventId":"6576",
                             "eventTime":"2019-12-11T11:20:53+04:00",
                             "eventType":"yyyy",
                             "event":{ 
                                "ServiceOrder":{ 
                                   "priority":"1",
                                   "**state**":"Pending"
                                }
                             }
                          }
                       ],
                       "78657":[ 
                          { 
                             "eventId":"6576",
                             "eventTime":"2019-12-11T11:20:53+04:00",
                             "eventType":"yyyy",
                             "event":{ 
                                "ServiceOrder":{ 
                                   "priority":"1",
                                   "**state**":"Pending"
                                }
                             }
                          },
                          { 
                             "eventId":"6576",
                             "eventTime":"2019-12-11T11:20:53+04:00",
                             "eventType":"yyyy",
                             "event":{ 
                                "ServiceOrder":{ 
                                   "priority":"1",
                                   "**state**":"Completed"
                                }
                             }
                          },
                          { 
                             "eventId":"6576",
                             "eventTime":"2019-12-11T11:20:53+04:00",
                             "eventType":"yyyy",
                             "event":{ 
                                "ServiceOrder":{ 
                                   "priority":"1",
                                   "**state**":"Failed"
                                }
                             }
                          }
                       ]
                    };


...