Javascript 处理;“错误地”;来自服务的格式化JSON?

Javascript 处理;“错误地”;来自服务的格式化JSON?,javascript,knockout.js,Javascript,Knockout.js,我正在浏览淘汰教程,在JSON示例中,它假设web服务将返回如下JSON(如果是JSON对象数组): 如何处理返回不同结构JSON的服务 [ { "resource": { "id": 1} }, { "resource": { "id": 2} }, { "resource": { "id": 3 } } ] 我要的是id名,不是资源名 谢谢 编辑:我修复了资源上不正确的格式(按马特)。JSON是有效的,只是不是KO示例所期望的格式。您应该能够循环遍历数据并将其展平(假设您的原始数据是Jav

我正在浏览淘汰教程,在JSON示例中,它假设web服务将返回如下JSON(如果是JSON对象数组):

如何处理返回不同结构JSON的服务

[ { "resource": { "id": 1} }, { "resource": { "id": 2} }, { "resource": { "id": 3 } } ]
我要的是id名,不是资源名

谢谢


编辑:我修复了资源上不正确的格式(按马特)。JSON是有效的,只是不是KO示例所期望的格式。

您应该能够循环遍历数据并将其展平(假设您的原始数据是JavaScript对象数组而不是JSON):

var-original=JSON.parse([{“资源”:{“id”:1},{“资源”:{“id”:2},{“资源”:{“id”:3}]);
var=[];
对于(变量i=0;i

如果您真的需要再次将输出作为JSON返回,可以使用
JSON.stringify

第二个示例甚至不是有效的JSON<代码>资源
应包含在quotes.Oops中。我修正了代码示例。马特,我修正了我的示例。它是JSON对象的数组。但是,正如你所说,我可以循环通过它并将其展平。现在我可以做一些事情,比如var flattedArray=ko.observableArray(flatted);
[ { "resource": { "id": 1} }, { "resource": { "id": 2} }, { "resource": { "id": 3 } } ]
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);
}