1

AJAX経由でデータを送信できるように、フォームをJSONオブジェクトにシリアル化しようとしています。以下の関数を使用しています。

$.fn.serializeObject = function() {
var arrayData, objectData;
arrayData = this.serializeArray();
objectData = {};
$.each(arrayData, function() {
    var value;
    if (this.value != null && this.value != '') {
        value = this.value;
    } else {
        value = null;
    }
    if (objectData[this.name] != null) {
        if (!objectData[this.name].push) {
            objectData[this.name] = [ objectData[this.name] ];
        }

        objectData[this.name].push(value);
    } else {
        objectData[this.name] = value;
    }
});
return objectData;

};

問題は、シリアライゼーションが循環データ構造を考慮していないことです。たとえば、私は自分のフォームに持っています

<form:input path="discipline.cnfpDisciplineCode" class="required" />

これは次のようにシリアル化されます

{
    ...
    discipline.cnfpDisciplineCode : someValue
    ...
}

フォームをシリアル化して次のように見せるエレガントなソリューションはありますか

{
    ...
    discipline : 
        {
            cnfpDisciplineCode : someValue
        }
    ...
}

それとも、解析アルゴリズム全体を自分で実装する必要がありますか?

ありがとうございました。

4

2 に答える 2

0

abc のようなパスをネストされたオブジェクトに変換するためのすぐに使用できる関数があるとは思いません。パスの設定と取得の問題に対するいくつかの解決策が、次のスレッドに示されています。

ドット表記の JavaScript 文字列をオブジェクト参照に変換する

すでにSpringを使用しているので(少なくともtag-libのために使用しているように見えます)、入力パラメータをオブジェクトに自動的に変換できます。アイデアは、サーバー側に何らかの状態を表すオブジェクトがあり、このオブジェクトを通常どおりフォームに解析し、S​​pring が入力パラメーターから POJO への逆変換を単独で処理するというものです。この場合、Springs @ModelAttribute アノテーションの例をいくつか見てください。

于 2014-09-17T15:59:25.840 に答える