0

我正在使用 DOJO 1.8 iand 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是

{"firstName":"12345","middleName":"Joanna","lastName":"Eliza","address.addrLine1":"add1","address.addrLine2":"add2","address.addrLine3" :"add3","email":"12345"}

但我需要如下,

{"firstName":"12345","middleName":"Joanna","lastName":"Eliza", "address":{"addrLine1":"add1","addrLine2":"add2","addrLine3": “添加 3”},“电子邮件”:“12345”}

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

4

2 回答 2

0

Dojo 有各种各样的方法来完成这种任务。只需查看文档并选择合适的解决方案即可。

于 2012-11-23T07:11:06.110 回答
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/

于 2012-11-25T12:05:56.777 回答