将JSON反序列化为JAVASCRIPT对象

deserialize JSON to JAVASCRIPT object

本文关键字:JAVASCRIPT 对象 反序列化 JSON      更新时间:2023-09-26

我有一个问题来反序列化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"}
}

我想解析创建一个标识符对象,我的问题是这句话:

var obj = jQuery.parseJSON('{"Identifier": { "name":"uno","contextId":"dos"}}');

var obj2 = JSON.parse('{"Identifier": { "name":"uno","contextId":"dos"}}');

不工作,var obj和obj2不是一个标识符对象,我怎么能解析这个?由于

这个问题不是重复的,因为它比Michael标记为重复的问题早5年。

您可以创建一个函数来初始化这些对象。下面是我快速起草的:

function parseJSONToObject(str) {
    var json = JSON.parse(str);
    var name = null;
    for(var i in json) { //Get the first property to act as name
        name = i;
        break;
    }
    if (name == null)
        return null;
    var obj = new window[name]();
    for(var i in json[name])
        obj[i] = json[name][i];
    return obj;
}

这将创建一个由第一个属性的名称表示的类型的对象,并根据第一个属性的对象的属性分配它的值。你可以这样使用:

var identifier = parseJSONToObject('{"Identifier": { "name":"uno","contextId":"dos"}}');
console.log(identifier);
<<p> 生活例子/strong>