复杂的 html 表单到 json 对象

Posted

技术标签:

【中文标题】复杂的 html 表单到 json 对象【英文标题】:Complex html form to json object 【发布时间】:2017-04-28 23:59:36 【问题描述】:

我有一个高级表格。我需要从基本的 html 页面表单发送到我的 restapi。 我的表单由基本字段组成,例如。姓名、身份证等。 我还有一个对象列表。 当我在对象中需要一个对象时,我的问题就出现了。 例如。 jsonString 对象,它是动态的,可以包含多个字段。

<input type="text" name="jsonString.field1" value="123">
<input type="text" name="jsonString.field2" value="qwe">
<input type="text" name="jsonString.fieldN" value="...">

我想要的是:


id: 411421,
name: asdojasfjo,
alotOfRandomFields: "Random", 
"jsonString":  
    field1: "123",
    field2: "qwe",
    fieldN: "..." ,
numbers: [1,2,3,4]

我的 jsonString 对象字段名称可能会有所不同,例如。 “Petname”、petage、petOwnerName 和其他可能的形式。 “职位”和“薪水”。

我知道如果我用相同的名称保存它们,我会得到一个数组,但是我看不到字段名称,将来比较所有包含宠物的文档时需要这些名称。

目前我正在使用jquery:

form.serialize();

有什么想法或建议吗?

【问题讨论】:

我真的不明白为什么人们在不提供反馈的情况下对问题投反对票... 【参考方案1】:

我已经解决了我的问题。不太喜欢它的解决方式。所以如果有人有更好的想法,请分享:)

function ConvertFormToJSON(form)
    var array = jQuery(form).serializeArray();
    var json = jsonString:;
    var substring = "jsonString";
    jQuery.each(array, function() 
        if(this.name.indexOf(substring) !== -1)
            json["jsonString"][this.name.substring(10)] = this.value;
        
        else
            json[this.name] = this.value || '';
        

    );

    return json;

【讨论】:

以上是关于复杂的 html 表单到 json 对象的主要内容,如果未能解决你的问题,请参考以下文章

如何创建动态 html 表单的 JSON 对象(表单元素)?

通过 Fetch API 将复杂的表单数据发送到 PHP 端点 [重复]

将 HTML 表单转换为 JSON 对象

html 表单返回空对象而不是输入数据| Vue

如何把json数据动态输出到table表单或div中

转换为 JSON 时多个对象的 HTML 表单