2013-10-12 78 views
1

在服务器端,我有一个Asp.Net Web应用程序,一个WebMethod返回序列化就像一个JSON字符串这一个:问题映射JSON字符串与ko.mapping

Object { d= "[{"Id":"1","Name":"COMERCIAL BANK"}, 
{"Id":"2","Name":"AZTEC BANK"}, 
{"Id":"3","Name":"EL SALVADOR BANK"}]" } 

当我尝试使用结果映射var mappedBanks = ko.mapping.fromJSON(data.d),然后使用​​所有我打印的是c(),就像mappedBanks,应该是一个数组,没有元素,因为我可以迭代它,当我尝试打印第一个元素时,控制台说undefined。 Json有问题吗?或者我没有正确地绘制它。

+0

JavaScript字符串在双引号内不能有双引号。你需要或者在内部/外部使用单引号(''')或者使用单引号(''') – Pavlo

回答

2

ko.mapping.toJSON要求第一个参数是对象,而不是数组。你的选择是让你的JSON编码数组成为属性值。

var mappedBanks = ko.mapping.fromJS({ items: JSON.parse(data.d) }); 
console.log(mappedBanks.items); 
+0

我已经做了你告诉我的,但是当我打印“mappedBanks .Items“ –

+0

实际上它的工作原理,但我改变了这个”var mappedBanks = {items:JSON.parse(data.d)};“.. –

+0

你的代码是相同的,除了'items'将是普通数组,不是observableArray。 –