You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用jQuery提交JSON后收到编码字符串,如何将其转换回JSON格式?

问题根因

你收到的period=1&data%5B3%5D=Here是URL编码后的application/x-www-form-urlencoded格式表单串,并非JSON结构,所以直接调用JSON.parse()不会生效。
出现这个情况的原因是jQuery的$.ajax默认会把传入的data对象序列化为表单格式,而非JSON格式。

最优解决方案:前端调整提交逻辑直接发JSON

直接修改前端提交代码,明确指定发送JSON格式请求,从根源避免转换成本:

const post = {
    period: "1",
    data: {1: "Here"}
}
$.ajax({
    url: 'http://127.0.0.1:5000/',
    // 手动将对象序列化为JSON字符串
    data: JSON.stringify(post),
    type: 'POST',
    // 声明请求体格式为JSON
    contentType: 'application/json; charset=utf-8'
})

修改后后端直接收到JSON结构数据,可直接用对应语言的JSON解析方法处理。

备选方案:后端将表单串转换为JSON

如果无法修改前端代码,可在后端先解析表单串再转为你需要的JSON结构,示例如下:

  • Python(适配你端口5000大概率用的Flask框架)示例:
from urllib.parse import parse_qs
import json

# 你收到的原始表单字符串
raw_form_str = "period=1&data%5B3%5D=Here"
# 解析URL编码的表单内容
parsed_form = parse_qs(raw_form_str)
# 转换为目标结构
target_data = {
    "period": parsed_form["period"][0],
    "data": {
        # 键名和你收到的实际参数对应即可,这里你收到的是data[3]就写3
        "3": parsed_form["data[3]"][0]
    }
}
# 可直接转为JSON字符串
json_result = json.dumps(target_data)
  • Node.js示例:
const querystring = require('querystring')

const rawFormStr = "period=1&data%5B3%5D=Here"
const parsedForm = querystring.parse(rawFormStr)
const targetData = {
    period: parsedForm.period,
    data: {
        3: parsedForm['data[3]']
    }
}
const jsonResult = JSON.stringify(targetData)

内容的提问来源于stack exchange,提问作者Michael Manders

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 10:27:03