我的 API 回應低于 JSON。回應包含多個會話節點,每個會話節點包含多個事件節點。我想在任何會話升序中識別第一個“搜索”事件(“型別”)。如果找到“SEARCH”事件,那么,我需要從特定事件中獲取“Interest”節點值。
var guestJson = await response.json();
for(var property in guestJson)
{
if(property === "sessions")
{
var sessionObj = JSON.parse(JSON.stringify(guestJson[property]))
for(var i=0; i< sessionObj.length; i )
{
var eachSessionObj = JSON.parse(JSON.stringify(sessionObj[i]))
for(var sessionProperty in eachSessionObj)
{
if(sessionProperty === "events")
{
console.log("Events Found")
//console.log(sessionProperty)
}
}
}
}
}
我可以像下面那樣使用 for 回圈。但我認為這不是這樣做的有效方法
下面是JSON結構
{
"firstName":"fn",
"lastName":"ln",
"gender":"male",
"sessions":[
{
"currency":"USD",
"events":[
{
"type":"SEARCH",
"status":"PROCESSED",
"arbitraryData":{
"interest":"Health"
}
},
{
"type":"CHECK",
"status":"PROCESSED",
"arbitraryData":{
"interest":"Dental"
}
}
]
},
{
"currency":"USD",
"events":[
{
"type":"SEARCH",
"status":"PROCESSED",
"arbitraryData":{
"interest":"Health"
}
},
{
"type":"CHECK",
"status":"PROCESSED",
"arbitraryData":{
"interest":"Dental"
}
}
]
}
] }
uj5u.com熱心網友回復:
您可以嘗試這樣的功能:
function extractInterest(guestJson) {
// Get all sessions or else get an empty array
const sessions = guestJson.sessions || [];
// Filter all sessions with events
const interest = sessions.filter(session => session.events)
.flatMap(session => session.events) // Maps all the events to a single list
.filter(event => event.type === "SEARCH") // Filter only the events with type "SEARCH"
.map(event => event.arbitraryData.interest); // Extract the interest from each event
return interest; // return the list of interests
}
當應用于您的示例 JSON 時,這將回傳一個興趣陣列,如下所示:
[ 'Health', 'Health' ]
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/505179.html
標籤:javascript json
下一篇:快速集成快遞物流軌跡查詢功能
