2013-10-07 8 views
24

以下に示すように、JSONを形成するために、私のjavascriptクラスのプロパティを通して 'マニュアル'を実行しています。それは不器用な感じで、私はこれを自動的に行う方法を学びたいので、たとえば、プロパティを追加または削除すると、 'toJson'関数を使いこなす必要はありません。JavaScriptオブジェクトのプロパティをJSON化する方法

この目的に向けて、以下の「toJson」機能をどのように適応させるかについて、参考にしてください。

事前に感謝します。

/* Using Simple JavaScript Inheritance 
* By John Resig http://ejohn.org/ 
* MIT Licensed.*/ 
var LogEntry = Class.extend({ 
    init: function (_conferenceId, _tokenId, _logType, _logValue) { 
     this.dato = new Date(); 
     this.logValue = _logValue; 
     this.logType = _logType; 
     this.conferenceId = _conferenceId; 
     this.tokenId = _tokenId; 
    }, 
    toJson: function() { 
     // ? 
     var jsonStringBuilder = '{ '; 
     jsonStringBuilder += '"dato": ' + this.dato.toString() + ','; 
     jsonStringBuilder += '"conferenceId": ' + this.conferenceId + ','; 
     if (this.tokenId== null) { 
      jsonStringBuilder += '"tokenId":null,'; 
     } 
     else { 
      jsonStringBuilder += '"tokenId": ' + _tokenId + ','; 
     } 
     jsonStringBuilder += '"logValue": ' + this.logValue + ','; 
     jsonStringBuilder += '"logType": ' + this.logType; 
     jsonStringBuilder += '}'; 

     return jsonStringBuilder; 
     } 
}); 

答えて

46

JSON.stringifyは、探している機能です。

一部のvery old browsersは、ネイティブにJSONオブジェクトを提供しませんが、これらのブラウザにはa shim libraryを使用できます。

+0

中のparamsの長い文字列を見て嫌い:機能(){ リターンJSON.stringify(この); } はnullを返します。 –

+0

あなたは 'toJSON'を誤解します。存在する場合、 'JSON.stringify' *はオブジェクトの' toJSON'メソッドを呼び出して、*関数が返す*オブジェクトを直列化します。 'toJSON'が存在しない場合、' stringify'は単にオブジェクトを直列化します。 – josh3736

+3

私はあなたの恩赦を請う。 'toJson'は関数の名前の自分の選択でした。私は貧しい人々の選択肢を集めています... –

7

私はあなたがJSON.stringify()を探していると思います。

+1

実際に試しましたが、 toJson:function(){ return JSON.stringify(this); } はnullを返します。 –

2

必要に応じてstringifyを使用できます。 Javascriptは本当に奇妙なことですが、コンテキスト抽象クラスを渡すことができますので、実際にクラスメンバーを定義する必要はありません。私はあなたの最終目標は、これをチェックしているのか分からない:

function foo(context) { 
    dosomething(context.bar); 
} 

あなたが動的に本質的にこのような文脈JSONオブジェクトを作り、簡単な宣言とメンバーの任意の数を追加することができます。

context.bar = "hello world"; 

このようにしてサーバーに 'コンテキスト'を渡すと、バックエンドフレームワークにJSON構文解析のようなものがあると仮定して、文字列化する必要はありません。

編集:私は少しオフトピックを持って、私はちょうど私が実際にそれを試してみたが、 toJsonでしたJS

関連する問題