簡體   English   中英

JSON的Java表格序列化

[英]Javascript form serialization for JSON

我正在嘗試將表單序列化為JSON對象,以便可以通過AJAX發送數據。 我正在使用以下功能:

$.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
        }
    ...
}

還是我必須自己實現整個解析算法?

謝謝。

不知道我是否知道您要做什么,這是在這種情況下我會使用的東西。

首先,您可以構建一個函數來創建對象,然后使用jQuery.ajax將其發送到服務器。

$.ajax({
        url: "servletAdress",
        type: "POST",
        accepts: "application/json",
        data: {obj: JSON.stringify(object) }, //it can be an array
        dataType: "json",
        beforeSend: function(x) {
            if (x && x.overrideMimeType) {
                x.overrideMimeType("application/json;charset=UTF-8");
            }
        }
});

在paramether'obj'尋址的servlet中,您將以字符串形式接收JSON。

您可能想使用com.google.gson在servlet中解析它

或者只是簡單地將表單提交給servlet。

我認為沒有現成的功能可以將abc等路徑轉換為嵌套對象。 以下線程介紹了有關路徑設置和獲取問題的幾種解決方案:

將點表示法的JavaScript字符串轉換為對象引用

當您已經在使用Spring時(由於使用了標簽庫,至少看起來像是在使用它),如果您要這樣做,則可以自動將輸入參數轉換為對象。 這個想法是在服務器端有一個代表某種狀態的對象,您可以像往常一樣將其解析為一種形式,而Spring自己處理從輸入參數到POJO的反向轉換。 在這種情況下,請查看一些有關Springs @ModelAttribute批注的示例。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM