如何将此 JSON 字符串更改为特定格式?

Posted

技术标签:

【中文标题】如何将此 JSON 字符串更改为特定格式?【英文标题】:How do I change this JSON string to a specific format? 【发布时间】: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&

我该怎么做?

【问题讨论】:

你确定不应该是"[\"PlatingId\":\"1\",\"DivisionId\":\"79\"],即两个对象合二为一吗? 是的,我确定。我没有得到我想要的格式。 相关:Convert array of objects to object of key-value pairs. 【参考方案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)

【讨论】:

以上是关于如何将此 JSON 字符串更改为特定格式?的主要内容,如果未能解决你的问题,请参考以下文章

如何在tableview中将JSON字符串更改为日期格式

将 JavaScript Date 对象转换为 JSON 字符串时日期更改为前一天

RestKit:如何将 RKRequest 正文字符串从 JSON 更改为纯文本?

将字符串更改为日期的问题

如何将 Laravel 输出的日期格式更改为 JSON?

如何在PHP中将对象转换为特定格式的数组