相关疑难解决方法(0)

如何从JSON恢复原始对象/类型?

使用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)

javascript json

12
推荐指数
4
解决办法
1万
查看次数

标签 统计

javascript ×1

json ×1