如何在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
相关产品推荐
相关产品推荐

