2013-03-28 85 views
0

我期待通过淘汰赛的教程,并在JSON的例子,它假定Web服务将返回JSON像这样(如果它是JSON对象的数组):处理来自服务的“错误”格式化的JSON?

[ { "id": 1}, { "id": 2}, { "id": 3} ] 

我会如何处理一种返回不同结构的JSON的服务?

[ { "resource": { "id": 1} }, { "resource": { "id": 2} }, { "resource": { "id": 3 } } ] 

我想要id名称,而不是资源名称。

谢谢。

编辑:我修复了资源上的错误格式(每马特)。 JSON是有效的,而不是KO示例所期望的格式。

+4

第二个例子甚至没有有效的JSON。 '资源'应该用引号引起来。 –

+0

糟糕。我修正了代码示例。 – Stephen

回答

2

您应该能够通过你们的数据环和压平(假设你原来的JavaScript对象的数组,而不是JSON):

var original = JSON.parse([ { "resource": { "id": 1} }, { "resource": { "id": 2} }, { "resource": { "id": 3 } } ]); 
var flattened = []; 
for (var i=0; i < original.length; i++) { 
    flattened.push(original[i].resource); 
} 

如果你真的需要输出追溯到JSON再次,你可以使用JSON.stringify

+0

马特,我修正了我的例子。这是一个JSON对象的混乱。但是,正如你所说的,我可以循环并平滑它。所以现在我可以做类似var flattenedArray = ko.observableArray(flattened); – Stephen

+1

只是'JSON.parse'它。我会编辑我的答案。 –

相关问题