将嵌套的可观察数组序列化为JSON

时间:2013-04-17 14:56:22

标签: knockout.js

在KnockoutJS中有一种方法可以将可观察数组的嵌套结构序列化为JSON吗? 我正在使用JSON.stringify,但由于它不像someObservableArray()那样访问数组,因此它无法序列化嵌套数组:

Ex:我有一个可观察的数组,其中每个项目都包含一个可观察的数组作为属性。

目前我在调用JSON.stringify之前手动将其转换为标准JS对象,但是还有另一个敲除函数可以让我直接将其转换为JSON

1 个答案:

答案 0 :(得分:4)

您可以使用可以将嵌套的可观察结构序列化为JSON的ko.toJSON function

var vm = {
    someObservableArray: ko.observableArray(
    [{
        prop: ko.observable('val1'),
        childArray: ko.observableArray([{
            prop2: ko.observable('vla2')
        }, {
            prop2: ko.observable('val3')
        }])
    }, {
        prop: ko.observable('val4'),
        childArray: ko.observableArray([{
            prop2: ko.observable('val5')
        }, {
            prop2: ko.observable('val6')
        }])
    }])
}
console.log(ko.toJSON(vm));
// output: {"someObservableArray":[{"prop":"val1","childArray":[{"prop2":"vla2"},
//         {"prop2":"val3"}]},{"prop":"val4","childArray":[{"prop2":"val5"},
//         {"prop2":"val6"}]}]}

演示JSFiddle