我有一个javascript对象,嵌套对象是通过一个名为'json'的变量保存的插件获得的:
// var json:
Object {0: Object, 1: Object}
0: country
countryCapital: Object
ministers: Array[1]
1: country
countryCapital: Object
ministers: Array[3]
// Should be restructured to fit MVC models
World
Country Array [2]
Capital: Object
Minister: Array [1]
因为我正在使用jQuery-ajax将数据发送到MVC控制器,我正在尝试重命名/重构它们以将它们绑定到MVC模型,因此我可以将整个“World”对象作为1个参数发送。
// Controller
[HttpPost]
public void Save(World world)
// Model structure:
World
* Country (list)
1 Capital
* Minister (list)
如何将javascript对象转换为适合Model参数的正确结构?我需要循环所有内容还是可以更好地完成?
更新:
json对象更新,这是很多数据所以我简化了它。
// World
{
"0": { // Country
"ministers":
{
"objects": [
{
"name": "name1"
},
{
"name": "name2"
}
]
},
"countryCapital": {
"name": "...",
}
},
"1": { // Country
"ministers":
{
"objects": [
{
"name": "name1"
},
{
"name": "name2"
}
]
},
"countryCapital": {
"name": "...",
}
}
}
答案 0 :(得分:1)
我想你正在搜索$.map()
。
在后台,它正在循环你的收藏,但在你的情况下使用它会更加清晰。
答案 1 :(得分:1)
更新以使用您的示例json。 Jsfiddle
var world = {}
for (var countryIteration in originalObject) {
var country = originalObject[countryIteration];
world[countryIteration] = { //you need to this because you need dynamic keys.
capital : country.countryCapital.name,
ministers : country.ministers.objects
}
}

答案 2 :(得分:1)
我找到了一个有效的解决方案,感谢teo van kot使用jQuery map。
var world = {}
$.map(json, function (value, i) {
if (i == "countryCapital") {
world.Capital = value
}
if (i == "ministers") {
world.Minister= value
$.each(value, function (j, minister) {
world.Minister[j].Name = minister.name;
delete minister.name;
});
}
}, world);