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

如何在Python中将JSON字符串转换为数组?解决JavaScript发送字典数组到Python POST请求后无法解析为字典数组的问题

解决JavaScript向Python发送字典数组的解析问题

一、前端发送方式优化(更简洁的方案)

你目前是把数组转成JSON字符串后作为表单字段发送,这才导致后端拿到的是一个被包裹在列表里的字符串。其实有两种更顺畅的方式来发送数据:

方法1:直接传递数组,让jQuery自动序列化

不用手动JSON.stringify,直接把数组作为data的值传递,jQuery会自动处理成适合表单提交的格式:

mydata.push({ department_id: department_id, cardgroup_id: cardgroup, doorgroup_id: doorgroup });
$.post(`data/save-office/${office}`, { data: mydata }, function (data) {
    console.log(data);
});

不过这种方式更适合简单结构,对复杂数据推荐下面的JSON请求方式。

方法2:发送JSON格式的请求体

直接把数组转成JSON字符串后,设置请求的contentType为application/json,这样后端能直接解析成字典数组:

mydata.push({ department_id: department_id, cardgroup_id: cardgroup, doorgroup_id: doorgroup });
$.ajax({
    url: `data/save-office/${office}`,
    type: 'POST',
    contentType: 'application/json',
    data: JSON.stringify(mydata),
    success: function(data) {
        console.log(data);
    }
});

后端只需要一行代码就能拿到现成的字典数组:

departments_list = request.get_json()

二、后端处理现有数据(不改前端的情况下)

如果暂时不想调整前端代码,你可以用Python的json模块把拿到的字符串解析成字典数组:

import json

# 取出列表中唯一的JSON字符串
json_string = departments[0]
# 解析为字典数组
departments_list = json.loads(json_string)

这样departments_list就是你需要的结构,每个元素都是包含department_id、cardgroup_id和doorgroup_id的字典。

简单说下原因:你之前把数组转成字符串后作为表单的data字段发送,后端request.form.getlist('data')只会把这个字段的取值(也就是那个长字符串)作为列表的单个元素返回,不会自动解析JSON结构,所以需要手动转一下。

内容的提问来源于stack exchange,提问作者Omar Abdelrazik

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.28 16:34:06