29

以下に示すように、JSON を形成するために、JavaScript クラスのプロパティを「手動で」実行しています。それは不器用に感じるので、これを自動的に行う方法を学びたいので、たとえば、プロパティを追加または削除する場合に「toJson」関数をいじる必要はありません。

以下の「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;
        }
});
4

3 に答える 3

51

JSON.stringifyあなたが探している機能です。

一部の非常に古いブラウザJSONではオブジェクトがネイティブに提供されませんが、それらのブラウザには shim ライブラリを使用できます。

于 2013-10-07T20:55:06.767 に答える
7

を探していると思いますJSON.stringify()

于 2013-10-07T20:55:24.067 に答える
2

必要に応じて stringify を使用できます。Javascript も非常にクールで、コンテキスト抽象を渡すことができるため、クラス メンバーをそのまま定義する必要はありません。あなたの最終目標が何であるかはわかりませんが、これを確認してください:

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

簡単な宣言で任意の数のメンバーを動的に追加し、コンテキストを本質的に次のように JSON オブジェクトにすることができます。

context.bar = "hello world";

このようにして、「コンテキスト」をサーバーに渡すときに、それを「文字列化」する必要はありません (バックエンド フレームワークに何らかの JSON 解析があると仮定します)。

編集:私は少し話題から外れました.JSで長いパラメータの文字列を見るのが嫌いです

于 2013-10-07T21:01:56.603 に答える