【发布时间】:2018-02-22 17:27:41
【问题描述】:
在我的 ASP.NET 后端,我使用 SignalR 返回一个名为 Job 的模型数组,这些模型可以有 n 数量的子作业。一份工作可能如下所示:
{
"id": 0,
"json": '{"error": "Some error"}',
"children": [{
"id": 1
}, {
"id": 3,
"children": [{
"id": 4,
"json": '{"error": "Some other error"}'
}]
}]
}
如您所见,每个工作都可以有一个孩子,也可以有另一个孩子,依此类推。每个作业还有一个json 属性,它是文本字符串中的 JSON。我想将它们反序列化为一个常规的 JavaScript 对象,如下所示:
var deserialized = {
"id": 0,
"json": {
"error": "Some error"
},
"children": [{
"id": 1
}, {
"id": 3,
"children": [{
"id": 4,
"json": {
"error": "Some other error"
}
}]
}]
}
所以基本上是这样的:
- 如果作业具有
json属性,只需执行job.json = JSON.parse(job.json) - 如果作业有子项,则遍历所有子项
- 重复 1
我怎样才能做到这一点?我想递归是一种方法,但我更愿意看看是否可以利用新的 ES6 方法。
【问题讨论】:
-
我添加了答案。我希望它会按照您的期望工作。谢谢
标签: javascript json ecmascript-6 signalr