具有嵌套对象属性的FormData到对象(Pure JS)

时间:2017-11-08 09:55:54

标签: javascript forms typescript serialization

我有一个表单需要转换为javascript对象才能继续进行。

使用

输出表格
var theForm = ev.target as HTMLFormElement;

var formData = new FormData(theForm);
for (let pair of formData.entries()) {
    console.log(`${pair[0]}, ${pair[1]}`);
}

导致以下

firstName, test
lastName, user
nickName, nickname
socialMedia[0]["id"], 2501A153-2940-4A5D-91BD-A1A9537A3E69
socialMedia[0]["url"], https://www.facebook.com/someuser
socialMedia[1]["id"], 5499E656-4151-4B5A-914E-3159865B9B49
socialMedia[1]["url"], https://www.twitter.com/someuser

这些是需要转换为的类定义:

class PlayerObject {
    firstName?: string;
    lastName?: string;
    nickName?: string;
    socialMedia?: SocialMediaObject[];
}

class SocialMediaObject {
    id?: string;
    url?: string;
}

我的问题是嵌套对象(在这种情况下为SocialMediaObject)。最终的对象应如下所示:

{
    "firstName": "test",
    "lastName": "user",
    "nickName": "nickname",
    "socialMedia": [
        {   
            "id": "2501A153-2940-4A5D-91BD-A1A9537A3E69",
            "url": "https://www.facebook.com/someuser"
        },
        {
            "id": "5499E656-4151-4B5A-914E-3159865B9B49",
            "url": "https://www.twitter.com/someuser"
        }
    ]
}

我没有可以使用的框架。所以它必须是纯粹的js。

使用JSON.stringify/parse有什么办法吗? 名称应该设置不同,例如socialMedia[0].urlsocialMedia.0.url

0 个答案:

没有答案