javascript - 简化 JavaScript 对象的 JSON 输出

标签 javascript arrays json

这是我的第一篇文章。 我对 JavaScript 对象还很陌生,我花了一天时间试图弄清楚,但我仍然陷入困境......我希望有人能给我一个提示。

基本上,我有 2 个或更多表单需要通过 ajax 调用序列化和发送数据。

我有这些表格:

<form class="lang_block">

    <fieldset>

        <legend>it</legend>

        <input name="language" value="Italiano" type="text">
        <input name="data" value="data_it" type="text">
        <input name="temp" value="temp_it" type="text">

    </fieldset>

</form>

<form class="lang_block">

    <fieldset>

        <legend>en</legend>

        <input name="language" value="English" type="text">
        <input name="data" value="data_en" type="text">
        <input name="temp" value="temp_en" type="text">

    </fieldset>

</form>

还有这个 JavaScript 函数:

function ConvertFormToJSON(target_form)
    {
        var form = $(target_form);

        var arr = [];

        form.each(function()
        {
            var obj = {};

            var sr = $(this).serializeArray();

            obj = $.each(sr, function()
            {
                sr[this.name] = this.value;
            });

            arr.push(obj);
         });

        return JSON.stringify(arr);
    }

    ConvertFormToJSON('.lang_block');

输出:

"[
    [
        {
            "name": "language",
            "value": "Italiano"
        },
        {
            "name": "data",
            "value": "data_it"
        },
        {
            "name": "temp",
            "value": "temp_it"
        }
    ],
    [
        {
            "name": "language",
            "value": "English"
        },
        {
            "name": "data",
            "value": "data_en"
        },
        {
            "name": "temp",
            "value": "temp_en"
        }
    ]
]"

我想要实现的输出:

"[

    {
        "language": "Italiano",
        "data": "data_it",
        "temp": "temp_it",
    },

    {
        "language": "English",
        "data": "data_en",
        "temp": "temp_en",
    }

]"

最佳答案

您正在 sr 而不是对象上设置值。尝试一下:

function ConvertFormToJSON(target_form)
{
    var form = $(target_form);

    var arr = [];

    form.each(function()
    {
        var obj = {};

        var sr = $(this).serializeArray();

        $.each(sr, function() {
            obj[this.name] = this.value;
        });

        arr.push(obj);
     });

    return JSON.stringify(arr);
}

ConvertFormToJSON('.lang_block');

关于javascript - 简化 JavaScript 对象的 JSON 输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28245571/

相关文章:

javascript - Gmail API 多帐户

arrays - 如何检查给定单元格是否包含任何数字?

json - 使用jQuery获取json数据返回无效标签错误

javascript - 在平面列表中使用本地 img (React-Native)

python - 如何在python中将json转换为树

javascript - 递归 promise 会遭受内存泄漏吗?

javascript - 如何使用 javascript 识别唯一设备?

javascript - 如何替换javascript中多次出现的字符串?

javascript - 如何在 Spring 中正确创建 JavaScript 日期数组?

javascript - 修改一个数组会修改我用它创建的另一个数组