使用eval或JSON.parse可以轻松地将JSON加载到javascript中的对象中.
但是如果你有一个像函数这样的"类",那么如何将JSON数据输入呢?
例如
function Person(name) {
this.name=name;
this.address = new Array();
this.friendList;
this.promote = function(){
// do some complex stuff
}
this.addAddress = function(address) {
this.address.push(address)
}
}
var aPersonJSON = '{\"name\":\"Bob\",\"address\":[{\"street\":\"good st\",\"postcode\":\"ADSF\"}]}'
var aPerson = eval( "(" + aPersonJSON + ")" ); // or JSON.parse
//alert (aPerson.name); // Bob
var someAddress = {street:"bad st",postcode:"HELL"};
//alert (someAddress.street); // bad st
aPerson.addAddress(someAddress); // fail!
Run Code Online (Sandbox Code Playgroud)
关键是我需要能够从JSON创建适当的Person实例,但我能得到的只是一个愚蠢的对象.我想知道它是否有可能用原型做一些事情?
我不想要解析JSON的每一行并将每个变量分配给相应的函数属性,这太难了.我所拥有的实际JSON和函数比上面的例子复杂得多.
我假设可以将函数方法JSONify转换为JSON字符串,但是因为我需要保持结果数据尽可能小这不是一个选项 - 我只想存储和加载数据,而不是方法的javascript代码.
我也不想将JSON加载的数据作为子对象放入,如果我可以帮助它(但可能是唯一的方法),例如
function Person(name) {
this.data = {};
this.data.name=name;
}
var newPerson = …Run Code Online (Sandbox Code Playgroud)