如何循环json.stringify以使其更新自身?

时间:2016-10-08 14:32:55

标签: javascript json

我在使用json.stringify时遇到问题。我有一个带有一个函数的on-click按钮,它将另一个对象添加到包含数组的var中。

var example = [{name: "K", age: 12},{name: "L", age: 12}];
var jsonE = JSON.stringify(example);

每当我在示例中添加另一个对象时,jsonE的值都不会改变。

有没有办法不断更新json,因为一旦你将一个对象放入数组中,并且字符串化"例如",它就无法自行更新?我应该使用循环吗?

SOLUTION:

在调用on-click按钮时生成JSON.stringify

2 个答案:

答案 0 :(得分:0)

您可以简单地使用JSON.parse来获取对象,并可以向其添加新对象,并再次对其进行字符串化。

var example = [{name: "K", age: 12},{name: "L", age: 12}];
var jsonE = JSON.stringify(example);
// get objects
var exampleParsed = JSON.parse(jsonE);
// add new object to var
exampleParsed.push({name: "M", age: 13});
// stringify new var
JSON.stringify(exampleParsed);

// output
"[{"name":"K","age":12},{"name":"L","age":12},{"name":"M","age":13}]"

看看这是否适合你(y)。

答案 1 :(得分:0)

根据它将数组与操作分离的好方法是将数组建模为observable

为此,您可以将数组封装为可观察对象,然后让JSON.stringify依赖项注册回调

function ObservableArray() {
   var self = this;
   this.onPushCbs = [];
   this.array = []
   this.push = function(value) {
     this.array.push(value)
     this.onPushCbs.forEach(function(cb) {
        cb(self.array);
     })
   }
}

var arr = new ObservableArray()
// ObservableArray {onPushCbs: Array[0], array: Array[0]}
// register event so every time that array is pushed to the value will
// be logged
arr.onPushCbs = [function(a) { console.log(a)}]
arr.push('1')
// logs ['1']
相关问题