使用含JSON数据的CSV配置时引号读取异常,POST请求引号重复如何解决?
解决CSV存储POST请求JSON时引号重复的问题
这个问题我之前也碰到过,根源是CSV的引号转义机制在搞鬼——当你把完整的JSON字符串作为CSV的单个字段存储时,CSV会自动对内部的双引号进行转义(变成两个连续双引号),同时给整个字段套上外层引号,导致发送POST请求时JSON格式被破坏。下面给你几个可行的解决方法:
方法1:放弃用CSV存储完整JSON(最稳妥)
CSV本来就不是为存储嵌套JSON设计的,直接改用纯JSON文件来存储请求数据,完全避开CSV的转义问题:
- 新建一个
.json文件,把你的请求体直接写进去:{"Name":"","Token":-1,"TimeScheduleToken":"1","AccessRule":[{"ObjectToken":"528","ObjectName":"Common_wash_Room_Exit","RuleToken":"528","RuleType":2,"StartDate":null,"EndDate":null,"ArmingRightsId":null,"ControlModeId":null}]} - 发送请求时直接读取这个JSON文件的内容,或者解析成JSON对象后发送,不会有任何引号问题。
方法2:拆分JSON到CSV的多列
如果必须用CSV,把JSON的每个顶级键拆成CSV的一列,嵌套的数组可以单独处理(比如拆成多个列,或者用分隔符拼接数组元素):
比如你的CSV可以是这样的结构:
| Name | Token | TimeScheduleToken | ObjectToken | ObjectName | RuleToken | RuleType |
|---|---|---|---|---|---|---|
| -1 | 1 | 528 | Common_wash_Room_Exit | 528 | 2 |
发送请求时,再把这些列的值重新组装成完整的JSON对象,这样就不会触发CSV的引号转义。
方法3:读取CSV时还原转义的引号
如果一定要把完整JSON存在CSV的单个字段里,那在读取CSV并准备发送请求时,要正确处理转义的引号:
用Python处理的例子:
Python的csv模块会自动处理CSV的转义规则,读取后得到的字符串已经还原了单个双引号:
import csv import json import requests # 读取CSV文件,假设JSON存在名为"request_body"的列里 with open("your_data.csv", "r", encoding="utf-8") as csv_file: reader = csv.DictReader(csv_file) for row in reader: # 自动还原转义的引号,解析成JSON对象 request_data = json.loads(row["request_body"]) # 发送POST请求 response = requests.post("your_api_endpoint", json=request_data) # 处理响应 print(f"请求状态码: {response.status_code}")
用Excel VBA处理的例子:
Excel在读取单元格内容时,会自动把CSV里的双引号转义还原,直接读取单元格值即可:
Sub SendPostRequest() Dim httpObj As Object Dim jsonContent As String Dim apiUrl As String Set httpObj = CreateObject("MSXML2.XMLHTTP") apiUrl = "你的API地址" ' 读取A1单元格的JSON内容(Excel已自动处理转义引号) jsonContent = ThisWorkbook.Sheets("Sheet1").Range("A1").Value ' 发送POST请求 With httpObj .Open "POST", apiUrl, False .SetRequestHeader "Content-Type", "application/json" .Send jsonContent MsgBox "响应内容: " & .ResponseText End With Set httpObj = Nothing End Sub
注意事项
- 手动编辑CSV时,不要手动给JSON字段加外层引号,否则会导致双重转义;
- 如果JSON里包含CSV的字段分隔符(比如逗号),一定要让CSV正确包裹字段,否则会导致数据拆分错误。
内容的提问来源于stack exchange,提问作者Vittal
相关产品推荐
相关产品推荐

