如何展平 JSON 结果中的关联对?
我从服务器收到一个包含对象和关联表的数组。例如,我从服务器获得了以下 JSON 结果:
var myEvent = {
"Event":{
"SessionTags":[
{
"SessionID":1,
"TagID":x
},
{
"SessionID":2,
"TagID":x
},
{
"SessionID":2,
"TagID":y
},
{
"SessionID":3,
"TagID":z
}
],
"Sessions":[
{
"ID":1,
"Name":"Advanced Tips",
},
{
"ID":2,
"Name":"Best Practices"
},
{
"ID":3,
"Name":"Code Fun"
},
"Tags":[
{
"ID":x,
"Name":"AJAX"
},
{
"ID":y,
"Name":"Android"
},
{
"ID":z,
"Name":"ASP.NET"
},
]
}
}
注意用作关联表的“SessionTags”对象。如何在会话标记中添加正确的标记对象,以便我最终得到以下结果:
var myNewEvent = {
"Event":{
"Sessions":[
{
"ID":1,
"Name":"Advanced Tips",
"Tags":[
{
"ID":x,
"Name":"AJAX"
}
]
},
{
"ID":2,
"Name":"Best Practices",
"Tags":[
{
"ID":x,
"Name":"AJAX"
},
{
"ID":y,
"Name":"Android"
}
]
},
{
"ID":3,
"Name":"Code Fun",
"Tags":[
{
"ID":z,
"Name":"ASP.NET"
}
]
}
}
}
I receive an array from a server which contains objects and association tables. So for example, I have this JSON result from the server:
var myEvent = {
"Event":{
"SessionTags":[
{
"SessionID":1,
"TagID":x
},
{
"SessionID":2,
"TagID":x
},
{
"SessionID":2,
"TagID":y
},
{
"SessionID":3,
"TagID":z
}
],
"Sessions":[
{
"ID":1,
"Name":"Advanced Tips",
},
{
"ID":2,
"Name":"Best Practices"
},
{
"ID":3,
"Name":"Code Fun"
},
"Tags":[
{
"ID":x,
"Name":"AJAX"
},
{
"ID":y,
"Name":"Android"
},
{
"ID":z,
"Name":"ASP.NET"
},
]
}
}
Notice the "SessionTags" object that is used as an association table. How do I add the right tag object in the session tag so I end up with this:
var myNewEvent = {
"Event":{
"Sessions":[
{
"ID":1,
"Name":"Advanced Tips",
"Tags":[
{
"ID":x,
"Name":"AJAX"
}
]
},
{
"ID":2,
"Name":"Best Practices",
"Tags":[
{
"ID":x,
"Name":"AJAX"
},
{
"ID":y,
"Name":"Android"
}
]
},
{
"ID":3,
"Name":"Code Fun",
"Tags":[
{
"ID":z,
"Name":"ASP.NET"
}
]
}
}
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
试试这个:
我必须稍微清理你的数据(x、y、z的ID没有引用任何变量,而且你还有一些额外的逗号和缺少的右括号)才能得到它对于这个例子是可行的:
Try this:
I had to clean up your data slightly (IDs of x,y,z didn't refer to any variables, and you also have some extra commas and a missing closing bracket) to get it to be workable for the example: