首页 > 编程语言 >【python】记录一次python发送json数据到go服务端,服务端解析失败问题

【python】记录一次python发送json数据到go服务端,服务端解析失败问题

时间:2024-04-26 16:24:03浏览次数:24  
标签:python headers json dict data 服务端

【python】记录一次python发送json数据到go服务端,服务端解析失败问题

背景:在做性能测试时,python把采集到的性能数据通过post回传到服务端,服务端用go实现,服务端是将接收的json通过json.Unmarshal反序列化为对应的结构体,但在实现时一直提示数据类型错误的问题

问题代码

python发送请求
dict_data = {a:1, b:2, c:3}   # dict_data是一个字典
headers = {'Content-Type': 'application/json'}
data = json.dumps(dict_data)
response = requests.post(url, json=data, headers=headers)
go接收参数反序列化为结构体
// perfData是结构体,对应的json数据
err := json.Unmarshal(body, &PerfData)
报错信息
err1 is : json: cannot unmarshal string into Go value of type dao.PerfData

借助文心一言,说是数据类型错误,然后一直对比查看json的每个字段和结构体中的数据类型,发现没问题

解决

忽然想起来,python中发送json格式的数据时,会自动将字典转化为json,无需手动json.dumps转化为json数据

python正确代码
dict_data = {a:1, b:2, c:3}   # dict_data是一个字典
headers = {'Content-Type': 'application/json'}
response = requests.post(url, json=dict_data, headers=headers)     # 会自动把dict转化为json,所以参数还是字典类型

标签:python,headers,json,dict,data,服务端
From: https://www.cnblogs.com/alisleepy/p/18160333

相关文章

  • python - [11] 日常脚本汇总
    题记部分  一、updatetime更新将脚本放到目标文件夹,运行脚本可将文件夹下所有文件的更新时间都修改为当前时间。importos#指定目录路径directory_path="./"#遍历目录下的所有文件和子目录forroot,dirs,filesinos.walk(directory_path):forfilei......
  • python C++混合编程环境搭建
    一、python环境1.下载python安装包2.安装python(选择下载符号文件和二进制文件)注:多半会报错“Error0x80072f7d:FailedtosendrequesttoURL:……”,因为下载超时导致安装失败解决:1)手动下载core_pdb.msi等文件https://www.python.org/ftp/python/3.8.0/win32/(选择......
  • Vetur can't find `tsconfig.json` or `jsconfig.json` in *****报错
    解决Vscode报错[Veturcan‘tfind‘tsconfig.json‘or‘jsconfig.json‘] 报错原因翻译一下报错信息,"Vetur找不到tsconfig.json文件或者jsconfig.json文件".首先Vetur只会扫描项目的根目录下的jsconfig或者tsconfig,如果没有这两个文件之一,就会报错.如果你是通过vue-c......
  • JSON基本使用 - 副本
    1.JSON是什么?JSON,全称是JavaScriptObjectNotation,即JavaScript对象标记法。JSON是一种轻量级(Light-Meight)、基于文本的(Text-Based)、可读的(Human-Readable)格式。JSON的名称中虽然带有JavaScript,但这是指其语法规则是参考JavaScript对象的,而不是指只能用于JavaSc......
  • python读取xml,添加节点
    采用minidom读取,在dom上创建新节点,dom.createElement('item')再将节点挂在对应节点下byCardNo.appendChild(item)将修改后的dom重新写入,建议换一个文件名再测试,避免覆盖defadd(filename):#创建dom文档dom=minidom.parse(filename)root=dom......
  • SignalR服务端嵌入到WPF
    用的是.netframework4.7.2的WPF。<Windowx:Class="EBServerTry.MainWindow"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:......
  • ROS2学习--OOP方法编写python节点
    1.创建工作空间mkdir-ptown_ws/srccdtown_ws/src2.创建功能包ros2pkgcreatevillage_li--build-typeament_python--dependenciesrclpypkgcreate是创建包的意思--build-type用来指定该包的编译类型,一共有三个可选项ament_python、ament_cmake、cmake--dependen......
  • [python省时间]处理文档,包括批量查找,替换,
    1、批量查找替换#-*-coding:utf-8-*-importosimportre#path=os.getcwd()str_old='insert'str_new='frs.event.queue'file_formate='init.sql'file_sql=open(r'F:\bak\init_all.sql','r+',encoding=......
  • python装饰器 - 理解与应用
    装饰器定义Python装饰器是一种高级功能,可以用来修改或扩展函数或类的行为。装饰器本质上是一个函数,它接受一个函数作为参数,并返回一个新的函数。通过在函数定义前使用@符号和装饰器函数的名称,可以在不修改原函数代码的情况下对函数进行功能增强或修改。装饰器可以用来实现日志记......
  • 【python省时间】时间转换、日期格式化、时间戳转字符、
    1、日期格式化defpaserTime(timestamp):t=time.time()f=time.localtime(timestamp/1000)print(t)#原始时间数据#print(int(t))#秒级时间戳print(int(round(t*1000)))#毫秒级时间戳#nowTime=lambda:int(round(t*......