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
}
...
}
それとも、解析アルゴリズム全体を自分で実装する必要がありますか?
ありがとうございました。