Как вывести JSON-строку свойств функции JavaScript (и наоборот)? - PullRequest
1 голос
/ 13 февраля 2011

Предполагая, что у меня есть функция 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 ,Я хочу создать строку JSON из всех переменных экземпляра функции Object1.Очевидно, ожидаемая строка JSON должна выглядеть следующим образом:

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

Два вопроса:

1.) Существует ли более элегантный способ ручной реализации to_json () метод в функции Object1, который создает объект JSON из всех переменных экземпляра и вызывает JSON.stringify () для этого объекта JSON?

2.) В этом отношении существует более элегантный способ создания экземпляраФункция Object1 на основе строки JSON, показанной выше в качестве примера, для ручной реализации метода from_json () для функции Object1, которая вызывает JSON.parse () для этой строки JSON, выполняет итерацию по результирующему объекту JSON и назначает каждое значение JSONк соответствующей переменной экземпляра.

1 Ответ

1 голос
/ 25 марта 2012

Я не уверен, почему вам нужны пользовательские методы 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}"

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...