Javascript 使用ko.mapping发出映射Json字符串

Javascript 使用ko.mapping发出映射Json字符串,javascript,asp.net,json,knockout.js,webmethod,Javascript,Asp.net,Json,Knockout.js,Webmethod,在服务器端,我有一个Asp.Net Web应用程序,WebMethod返回一个序列化的Json字符串,如下所示: 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),然后使用console.log(m

在服务器端,我有一个Asp.Net Web应用程序,WebMethod返回一个序列化的Json字符串,如下所示:

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)
,然后使用
console.log(mappedBanks)
映射该结果时,我得到的打印结果是
c()
,类似于mappedBanks,它应该是一个数组,没有元素,因为我可以对它进行迭代,当我尝试打印第一个元素时,控制台显示
未定义
。Json有问题吗?或者我没有正确地映射它

ko.mapping.toJSON
要求第一个参数是对象,而不是数组。您可以选择将JSON编码的数组设置为属性值

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

JavaScript字符串不能在双引号内包含双引号。您需要对它们进行转义(
\”
),或者在内部/外部使用单引号(
'
)。我按照您的要求做了,但当我打印“mappedBanks.Items”时,我仍然得到了“c()”,实际上它可以工作,但我为此变量mappedBanks={Items:JSON.parse(data.d)};“。您的代码与此相同,只是
将是普通数组,而不是可见数组。