使用DOJO将表单字段转换为JSON嵌套对象

时间:2012-11-23 07:05:04

标签: javascript json dojo

我正在使用DOJO 1.8和spring mvc。我想将我的表单字段转换为JSON对象并将其传递给控制器​​。使用DOJO dom-form.toObject(“myForm1”),如果它是一个简单的对象,我可以将Json传递给控制器​​。

如果我的模型对象有内部对象,则.toObject()无法将其转换为嵌套的JSON对象。

var formObject1 = domForm.toObject("myForm1");
    alert("hi");
    require(["dojo/json"], function(JSON){
        postData = JSON.stringify(formObject1);
    });

    dojo.byId("testdiv").innerHTML = postData;

和我得到的Json是

  

{ “名字”: “12345”, “中间名”: “乔安娜”, “姓氏”: “伊丽莎”, “address.addrLine1”: “ADD1”, “address.addrLine2”: “ADD2”,“地址.addrLine3 “:” ADD3" , “电子邮件”: “12345”}

但我需要如下,

  

{ “名字”: “12345”, “中间名”: “乔安娜”, “姓氏”: “伊丽莎” 的 “地址”:{ “addrLine1”: “ADD1”, “addrLine2”:“ADD2 ”, “addrLine3”: “ADD3”} 下, “电子邮件”: “12345”}

DOJO是否支持这种类型的JSON转换?

2 个答案:

答案 0 :(得分:0)

Dojo有这种任务的各种方法。只需查看documentation并选择合适的解决方案。

答案 1 :(得分:0)

一个能完成这项工作的简短功能:

// lang = require("dojo/_base/lang");
function deepenObject(/*Object*/ object) {    
    object = lang.clone(object);
    for(var key in object) {
        if(object.hasOwnProperty(key) && ~key.indexOf(".")) {
            lang.setObject(key, object[key], object);
            delete object[key];
        }       
    }
    return object;
}

然后只是:

var result = deepenObject(formObject1);

查看实际操作:http://jsfiddle.net/phusick/gaJ8C/