使用 jQuery 发布 JSON 后,将字符串转换回 JSON

Posted

技术标签:

【中文标题】使用 jQuery 发布 JSON 后,将字符串转换回 JSON【英文标题】:After posting JSON with jQuery, convert the string back into a JSON 【发布时间】:2021-11-02 05:03:03 【问题描述】:

所以我有一些发布此 JSON 的代码:

post = 
    period: "1",
    data: 1: "Here"

它是用这个代码发布的:

$.ajax(
    url: 'http://127.0.0.1:5000/',
    data: post,
    type: 'POST'
)

当我执行这段代码时,我的服务器会收到这个字符串:"period=1&data%5B3%5D=Here"

有没有办法将此字符串转换回 JSON?

我已经尝试过JSON.parse(),但这显然不起作用。

【问题讨论】:

您使用的是哪种服务器? php、nodejs/express等? 我正在使用 node.js 你在nodejs或express中尝试过body parser中间件吗? 您是否尝试在发送对象之前对其进行字符串化:data: JSON.stringify(post)(同时添加:contentType: "application/json; charset=utf-8")?如果您使用的是 express,您可以使用 urlencoded() 中间件将 url 编码的字符串解析为对象 把它改成data: JSON.stringify(post) 看看会不会有什么不同,因为我认为jQuery不会自动序列化数据。 【参考方案1】:

它从来都不是 JSON,您可以使用 JSON.stringify 将其作为 JSON 发送,然后使用 JSON.parse 将其作为对象返回到服务器。

$.ajax(
    url: 'http://127.0.0.1:5000/',
    data: JSON.stringify(post),
    contentType: 'application/json',
    type: 'POST'
)

【讨论】:

【参考方案2】:

你可以用URLSearchParams constructor解析字符串,然后用Object.fromEntries把它转换成一个对象:

const obj = Object.fromEntries(new URLSearchParams("period=1&data%5B3%5D=Here"));
console.log(obj)

【讨论】:

以上是关于使用 jQuery 发布 JSON 后,将字符串转换回 JSON的主要内容,如果未能解决你的问题,请参考以下文章

使用 jQuery 发布 JSON 后,将字符串转换回 JSON

jquery 数组转json

JS中将JSON的字符串解析成JSON数据格式《转》

js将字符串转json

jQuery有把json对象转成字符串的方法吗?

jQuery怎么把JSON格式的字符串转换为JSON对象