如何将此 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 字符串更改为特定格式?的主要内容,如果未能解决你的问题,请参考以下文章
将 JavaScript Date 对象转换为 JSON 字符串时日期更改为前一天