【问题标题】:How do I change this JSON string to a specific format?如何将此 JSON 字符串更改为特定格式?
【发布时间】:2021-05-29 00:19:40
【问题描述】:

我正在将一个字符串从视图传递到控制器。这是我的ajax代码

    var formData = $('#spec-wip-form, #platingspec-form').serializeArray();
    var platingId = @Model.PlatingId;

    var form = JSON.stringify(formData);
    $.ajax({
        url: "/Specifications/Edit",
        type: 'PUT',
        data: { form, cleaningProcess, platingId },
        success: function () {
            onUpdated();
        }
    });

我得到的 JSON 格式如下所示

"[{\"name\":\"PlatingId\",\"value\":\"1\"},{\"name\":\"DivisionId\",\"value\":\"79\"}]

我希望它看起来像这样

"[{\"PlatingId\":\"1\"},{\"DivisionId\":\"79\"}]

我之前已经试过了,但是

var formData = $('#spec-wip-form, #platingspec-form').serialize();

我明白了

formData: PlatingId=1&DivisionId=79&

我该怎么做?

【问题讨论】:

标签: javascript ajax asp.net-core-mvc


【解决方案1】:

感谢@SebastionSimon 的更正。此外,这不是双重字符串化以匹配您的预期结果。你总是可以通过 JSON.stringify 运行它第二次来匹配。

let json = '[{"name":"PlatingId","value":"1"},{"name":"DivisionId","value":"79"}]';

let newjson = JSON.stringify(
    JSON.parse(json).map(
        ({name, value}) => ({[name]: value})
        ))

console.log(newjson)

【讨论】:

    【解决方案2】:

    您可以使用 Object.fromEntries() 创建单个对象。

    const formData = [{"name":"PlatingId","value":"1"},{"name":"DivisionId","value":"79"}];
    
    const res = Object.fromEntries(formData.map(({name,value})=> [name, value]));
    
    console.log(res)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-08-02
      • 1970-01-01
      • 2015-12-25
      • 2020-02-29
      • 1970-01-01
      • 1970-01-01
      • 2020-02-02
      • 1970-01-01
      相关资源
      最近更新 更多