如何分析 WCF 数据合约对象创建的 JSON
How to parse JSON created by WCF DataContract object
我有一个用 [DataContract] 属性修饰的对象,我的 WCF 服务将其作为 JSON 返回,如下所示:
{"GetCommentsByPostResult":[{"CommentCreated":"'/Date(1305736030505+0100)'/","CommentText":"Comment 1"},{"CommentCreated":"'/Date(1305736030505+0100)'/","CommentText":"Comment 2"},{"CommentCreated":"'/Date(1305736030505+0100)'/","CommentText":"Comment 2"}]});
我试图用这个jQuery代码遍历CommentCreated:
$(data).each(function ()
{
alert(this.CommentCreated);
});
但我得到的只是一个带有"未定义"的警报框,所以我将其更改为:
$(data).each(function () {
$(this.GetCommentsByPostResult).each(function () {
alert(this.GetCommentsByPostResult);
});
});
但这仍然不起作用。我想做的是迭代 CommentCreated 并将它们扔到警报框中......
我
不确定,但我认为this
在调用each
时不会是当前元素。另外,为什么要用 jQuery 函数包装data
变量?jQuery 集合适用于 DOM 元素。
$.each(data.GetCommentsByPostResult, function (e) {
alert(e.CommentCreated);
});
根据您获取数据的方式(库?自定义代码?),您很可能必须首先将JSON字符串转换为实际的JavaScript对象。 许多浏览器都有内置的方法来实现这一点,尽管您可能需要利用第三方库来利用那些没有开箱即用支持的库。 我会推荐 JSON-js,因为它遵循与某些浏览器中内置的语法相同的语法。
var obj = JSON.parse(data);
拥有此对象后,您现在可以使用标准的 JavaScript 点或括号表示法访问数据:
var comments = obj.GetCommentsByPostResult; // or...
var comments = obj['GetCommentsByPostResult'];
这两行是等效的。 要迭代注释,就像您尝试的那样,您可以尝试:
$.each(obj.GetCommentsByPostResult, function (e) {
alert(e.CommentCreated);
});
另外,我建议使用 console.log() 而不是 alert(),以及支持检查记录对象的浏览器。 这将是带有Firebug扩展名的FireFox,或者带有开发人员工具的Chrome(Ctrl-Shift-J激活)。 不确定此类工具在IE9中的状态,尽管如果那里也有等效的工具,我不会感到惊讶。
相关文章:
- JavaScript名称空间和对象创建
- 从不同的对象创建阵列
- Nodejs-从对象创建可读流
- Javascript对象创建实践
- 插件SDK中的动态或计算对象创建
- 为json对象创建一个动态表
- 对象.创建解释
- 从对象创建嵌套数组失败
- 从JSON对象创建具有超链接的HTML表
- 如何将文档对象创建为HTML页面
- 创建一个类,该类使用es6类语法将Function对象创建为实例
- KineticJS在对象创建(NOOB)后更改属性
- 对象创建中的JavaScript && notation
- Javascript对象创建-创建许多对象
- 从另一个JSON对象创建JSON对象
- 使用linq.js从多个对象创建JSON对象数组
- 如何使用Immutable.js从javascript原始对象创建记录映射
- 在fabric.js中初始化对象创建的子类
- Angularfire:从$FirebaseObject的子对象创建$FirebaseObject
- 为JSON对象创建CRUD