【问题标题】:Issue mapping Json string with ko.mapping使用 ko.mapping 问题映射 Json 字符串
【发布时间】:2013-10-20 14:25:25
【问题描述】:

在服务器端,我有一个 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,它应该是一个数组,没有元素,因为我可以迭代它并且当我尝试打印第一个元素时,控制台显示undefined。 Json有问题吗?或者我没有正确映射它。

【问题讨论】:

  • JavaScript 字符串在双引号内不能有双引号。您需要转义它们 (\") 或在内部/外部使用单引号 (')。

标签: javascript asp.net json knockout.js webmethod


【解决方案1】:

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

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

【讨论】:

  • 我按照你说的做了,但是当我打印“mappedBanks.Items”时我仍然得到“c()”
  • 实际上它可以工作,但我为这个“var mappedBanks = { items: JSON.parse(data.d) };”更改了它..
  • 你的代码是一样的,除了items是普通数组,而不是observableArray。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-01-15
  • 2020-10-09
  • 2011-12-05
  • 1970-01-01
  • 1970-01-01
  • 2013-06-15
  • 2016-12-09
相关资源
最近更新 更多