2013-04-17 62 views
1

KnockoutJS有没有办法将可观察数组的嵌套结构序列化为JSON? 我透过JSON.stringify,但由于它不访问数组作为someObservableArray(),它将无法序列化嵌套的数组:将嵌套的可观察数组序列化为JSON

例:我有可观察到的阵列,其中每个条目包含可观察到的数组作为属性。

目前,我手动将其转换为标准的JS对象调用JSON.stringify之前,但有另一种基因敲除的功能,使我将其转换为JSON直接

+0

[JSON.stringify具有Knockout JS变量的对象]的可能重复(https://stackoverflow.com/questions/15087710/json-stringify-an-object-with-knockout-js-variables) – Nisarg

回答

4

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

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