【发布时间】:2011-12-23 18:47:11
【问题描述】:
我有一个将 JSON 文本反序列化为 javascript 对象的问题,我测试 jquery 和 yui 库,我有这个类:
function Identifier(name, contextId) {
this.name = name;
this.contextId = contextId;
}
Identifier.prototype.setName = function(name) {
this.name = name;
}
Identifier.prototype.getName = function() {
return this.name;
}
Identifier.prototype.setContextId = function(contexId) {
this.contextId= contexId;
}
Identifier.prototype.getContextId = function() {
return this.contextId;
}
我有这个 JSON:
{
"Identifier": {
"name":"uno",
"contextId":"dos"}
}
我想解析创建一个Identifier对象,我的问题是这句话:
var obj = jQuery.parseJSON('{"Identifier": { "name":"uno","contextId":"dos"}}');
或
var obj2 = JSON.parse('{"Identifier": { "name":"uno","contextId":"dos"}}');
不工作,var obj 和 obj2 不是 Identifier 对象,我该如何解析它? 谢谢
这个问题不是重复的,因为它比迈克尔标记为重复的问题早了 5 年
【问题讨论】:
-
您不能使用 json 创建
Identifier对象,您可以创建具有相同数据结构的对象字面量,但这些函数都不起作用。您可以做的是在获得 json 后将它们添加到文字中,使其像Indentifier对象一样工作。 -
将
fromJson方法添加到Identifier并相应地解析和处理JSON 以创建一个新的Identifier实例。 -
或者,您可以在使用
JSON.parse时使用“reviver”函数参数,该参数将为您的字符串化 json 字符串的每个属性调用。在该reviver函数中,您可以在适当的时间创建一个Identifier对象,即在解析最后一个属性时。 MDN上有几个例子。
标签: javascript json