如何派生JavaScript函数属性的JSON字符串(反之亦然)?

时间:2011-02-13 03:54:49

标签: javascript json

假设我有一个像这样的JavaScript函数......

function Object1() {
  this.var1;
  this.var2;
  this.var3;

  this.method1 = function() {
    this.var3 = this.var1 + this.var2;
  }
}

...并创建一个实例:

var obj1 = new Object1();
obj1.var1 = 1;
obj1.var2 = 2;
obj1.method1();

基于 obj1 ,我想从函数Object1的所有实例变量创建一个JSON字符串。显然,预期的JSON字符串应如下所示:

{"var1" : 1, "var2" : 2, "var3" : 3}

两个问题:

1。)是否有更优雅的方法在函数Object1中手动实现 to_json()方法,该方法创建所有实例变量的JSON对象并在该JSON对象上调用JSON.stringify() ?

2.。)在这方面,是否有一种更优雅的方法来创建一个函数Object1的实例,该函数基于上面示例性示出的JSON字符串,在函数Object1上手动实现 from_json()方法。在该JSON字符串上调用JSON.parse(),迭代生成的JSON对象并将每个JSON值分配给相应的实例变量。

1 个答案:

答案 0 :(得分:1)

我不确定你为什么要自定义to_json和from_json方法但是如果你想获得一个对象的公共变量及其数据的细节,那么你可以使用JSON.stringify没有任何问题,它也将处理嵌套对象,像这样

function Object1() {
  this.var1;
  this.var2;
  this.var3;
  this.var4;

  this.method1 = function() {
    this.var3 = this.var1 + this.var2;
  }
}

var obj1 = new Object1();
obj1.var1 = 1;
obj1.var2 = 5;
obj1.var4 = new Object1();
obj1.var4.var1 = 2;
obj1.var4.var2 = 3;
obj1.method1();
obj1.var4.method1();

JSON.stringify(obj1);

所以执行此操作后,您将获得"{"var1":1,"var2":5,"var4":{"var1":2,"var2":3,"var3":5},"var3":6}"