繁体   English   中英

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

[英]How to derive a JSON string of JavaScript function's properties (and vice versa)?

假设我有这样的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)在这方面,是否存在一种更优雅的方法来基于上面示例显示的JSON字符串创建Object1函数的实例,以便在函数Object1上手动实现from_json()方法,该方法在该JSON字符串上调用JSON.parse() ,对生成的JSON对象进行迭代,并将每个JSON值分配给相应的实例变量。

我不确定为什么要使用自定义的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}"

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM