2016-04-25 7 views
1

json形式に変換されたオブジェクトが必要です。以下のコードを試しましたが、オブジェクトはjson形式に変換されません。KnockoutJSを使ってオブジェクトをjson形式に変換するには?

function ViewModel() { 
    var self = this; 

    var jsonData = {  
      name: "Johnny", 
      surname: "Boy"   
    } 

    var obj = ko.toJS(jsonData);   
}; 

var vm = new ViewModel(); 
ko.applyBindings(vm); 
+0

'ko.toJS'と' ko.toJSON'は、2つの異なる方法があります。あなたはJSONに変換しようとしているのですか? –

+0

jsonDataはJSONオブジェクトです –

答えて

0

あなたがko.toJSONメソッドを利用する必要がある、these docsを参照してください。

function ViewModel() { 
 
    var self = this; 
 

 
    var jsonData = { 
 
    name: "Johnny", 
 
    surname: "Boy" 
 
    }; 
 

 
    var json = ko.toJSON(jsonData, null, 2); 
 

 
    console.log(json); 
 
    self.myjson = json; 
 
}; 
 

 
var vm = new ViewModel(); 
 
ko.applyBindings(vm);
<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.4.0/knockout-min.js"></script> 
 
<pre data-bind="text: myjson"></pre>

第二と第三引数はオプションです。私がそれらを入力したので、あなたはフォーマットされた出力を望んでいることを暗示します。ko.toJSONJSON.stringifyと同じ引数を使います。

脚注として、ko.toJSは、主にビューモデル全体(ただしパブリックプロパティのみ)をプレーンなJSオブジェクトに変換するのに便利です。この例を参照してください:

function ViewModel() { 
 
    var self = this; 
 

 
    // Not visible in ko.toJS/ko.toJSON: 
 
    var privateproperty = "privacy!"; 
 
    self.alerter = function() { alert('Hi!'); }; 
 
    
 
    // All visible in ko.toJS/ko.toJSON: 
 
    self.name = ko.observable("Johnny"); 
 
    self.surname = ko.observable("Boy"); 
 
    self.publicproperty = "publicly!"; 
 
}; 
 

 
var vm = new ViewModel(); 
 

 
ko.applyBindings(vm); 
 

 
console.log(ko.toJS(vm)); // outputs a JS *object* 
 
console.log(ko.toJSON(vm)); // outputs it as a json-string
<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.4.0/knockout-min.js"></script> 
 
See console.log output...

関連する問題