1

I am trying to fetch all the state parameter values for each id - 2434,78657.Kindly help me out how to do this in typescript.As it is a nested JSON, I am unable to fetch these values

JSON Request:

                        { 
                           "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"
                                    }
                                 }
                              }
                           ]
                        }

Desired Output:

For example, for id 2434, array with all the state parameter values has to be returned.

[InProgress, InProgress, Pending]

3 Answers3

3

Here is your required answer,

This answer is made dynamic so that you can send have any number of keys in your Object and it still returns the state value of all the keys by nested looping.

The piece of code that does magic for you,

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']
        )
     } 
 } 

The code execution:

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);

Please run the above snippet

Here is the O/P:

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

Here is a working DEMO

Sravan
  • 18,467
  • 3
  • 30
  • 54
0

i think this one is help you. first of all decode json.

$result =  json_decode($row[1]);
echo $result->{'2434'}[0]->event->ServiceOrder->{'**state**'};

results is below.

answer: InProgress
lczapski
  • 4,026
  • 3
  • 16
  • 32
Harjinder
  • 17
  • 2
0

check this one, here you have to pass particular id (example 2434) from which you need status. Just pass the id and it will return the status in the form of an array.


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"
                                }
                             }
                          }
                       ]
                    };