proto与json的互相转换

proto与json的互相转换

  • proto使用
    • proto
  • python dict和message
  • python message序列化
  • golang
    • message序列化
    • message转json

proto使用

生成逻辑请参考
https://blog.csdn.net/qq_43645782/article/details/127112663

proto

syntax = "proto3";message testRequest {string id = 1;
}

python dict和message

import jsonfrom google.protobuf.json_format import MessageToJson, MessageToDict
from google.protobuf.json_format import ParseDict, Parsefrom grpc0.code.test_pb2 import testRequestif __name__ == '__main__':proto_obj = testRequest(id="123",)print(f"{MessageToDict(proto_obj)=}")print(f"{MessageToJson(proto_obj)=}")json_obj = {"id": "456"}print(f"{Parse(json.dumps(json_obj), testRequest)=}")print(f"{ParseDict(json_obj, testRequest)=}")
MessageToDict(proto_obj)={'id': '123'}
MessageToJson(proto_obj)='{\n  "id": "123"\n}'
Parse(json.dumps(json_obj), testRequest)=<class 'test_pb2.testRequest'>
ParseDict(json_obj, testRequest)=<class 'test_pb2.testRequest'>

python message序列化

import jsonfrom google.protobuf.json_format import MessageToJson, MessageToDict
from google.protobuf.json_format import ParseDict, Parsefrom grpc0.code.test_pb2 import testRequestif __name__ == '__main__':proto_obj = testRequest(id="123",)proto_bytes = proto_obj.SerializeToString()print(proto_bytes)proto_obj1 = testRequest()proto_obj1.ParseFromString(proto_bytes)print(proto_obj)print(proto_obj1)
b'\n\x03123'
id: "123"
id: "123"

golang

在golang使用比较简单,protobuf生成的go struct是支持proto和json的序列化和反序列化的

message序列化

out, err := proto.Marshal(protoObj)
err := proto.Unmarshal(in, &protoObj)

message转json

out, err := json.Marshal(protoObj)
err := json.Unmarshal(in, &protoObj)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/241252.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

微服务之配置中心与服务跟踪

zookeeper 配置中心 实现的架构图如下所示&#xff0c;采取数据加载到内存方式解决高效获取的问题&#xff0c;借助 zookeeper 的节点监听机制来实现实时感知。 配置中心数据分类 事件调度&#xff08;kafka&#xff09; 消息服务和事件的统一调度&#xff0c;常用用 kafka …

c语言突击函数

函数 1.函数&#xff1a;是具有一定功能的程序块&#xff0c;是c语言的基本组成单位 2.函数的定义&#xff1a;[函数类型] 函数名 &#xff08;形式参数&#xff09; 函数不可以嵌套定义&#xff0c;但是可以嵌套调用 3.函数名缺省返回值&#xff0c;默认int&#xff1b; 4…

使用Java语言中的算法输出杨辉三角形

一、算法思想 创建一个名为YanghuiTest的类,然后创建二维数组&#xff0c;然后遍历二维数组的第一层&#xff0c;然后初始化第二层数组的大小&#xff0c;然后遍历第二层数组&#xff0c;然后将两侧的数组元素赋为1&#xff0c;然后其它数值通过公式计算&#xff0c;最后可以输…

Leetcode—1099.小于K的两数之和【简单】Plus

2023每日刷题&#xff08;六十八&#xff09; Leetcode—1099.小于K的两数之和 实现代码 class Solution { public:int twoSumLessThanK(vector<int>& nums, int k) {int n nums.size();int left 0, right n - 1;int sum 0;int ans 0;sort(nums.begin(), nums…

学堂云《信息检索与科技写作》单元测试考核答案

注&#xff1a;不含主观题 第1题 判断题 (1分) 信息检索与科技写作课程分别在工科、理科和文科三个大学科方向上进行了有针对性地开设。 正确答案&#xff1a; 对 第2题 多选题 (2分) 为什么要强调“检索”&#xff1f; A 信息爆炸B 文献浩如烟海C 提高效率D 科技迅…

讲座思考 | 周志华教授:新型机器学习神经元模型的探索

12月22日&#xff0c;有幸听了南京大学周志华教授题为“新型机器学习神经元模型的探索”的讲座。现场热闹非凡&#xff0c;大家像追星一样拿着“西瓜书”找周教授签名。周教授讲得依旧循循善诱&#xff0c;由浅入深&#xff0c;听得我很入迷&#xff0c;故作此记。 周教授首先就…

conda环境下module ‘backend_interagg‘ has no attribute ‘FigureCanvas‘问题解决

1 问题描述 在pycharm下&#xff0c;使用conda环境运行模型程序&#xff0c;调用matplotlib绘制图形&#xff0c;出现如下错误&#xff1a; Traceback (most recent call last):File "D:\code\cv\vgg16_cifar10.py", line 173, in <module>plt.xlabel(times)…

LRU 是什么?如何实现? 什么是堆内存?参数如何设置?

文章目录 LRU 是什么&#xff1f;如何实现&#xff1f;什么是堆内存&#xff1f;参数如何设置&#xff1f; LRU 是什么&#xff1f;如何实现&#xff1f; 最近最少使用策略 LRU&#xff08;Least Recently Used&#xff09;是一种缓存淘汰算法&#xff0c;是一种缓存淘汰机制。…

天文与计算机:技术的星辰大海

天文与计算机&#xff1a;技术的星辰大海 一、引言 在人类的历史长河中&#xff0c;天文学与计算机技术这两个领域似乎相隔甚远&#xff0c;然而在科技的推动下&#xff0c;它们却逐渐走到了一起&#xff0c;为人类对宇宙的探索开辟了新的道路。天文观测的复杂度与数据量随着…

【数据结构】最短路径算法实现(Dijkstra(迪克斯特拉),FloydWarshall(弗洛伊德) )

文章目录 前言一、Dijkstra&#xff08;迪克斯特拉&#xff09;1.方法&#xff1a;2.代码实现 二、FloydWarshall&#xff08;弗洛伊德&#xff09;1.方法2.代码实现 完整源码 前言 最短路径问题&#xff1a;从在带权有向图G中的某一顶点出发&#xff0c;找出一条通往另一顶点…

VUE前端导出文件之file-saver插件

VUE前端导出文件之file-saver插件 安装 npm install file-saver --save # 如使用TS开发&#xff0c;可安装file-saver的TypeScript类型定义 npm install types/file-saver --save-dev如果需要保存大于 blob 大小限制的非常大的文件&#xff0c;或者没有 足够的 RAM&#xff0…

Linux创建macvlan 测试bridge、private和vepa模式

Linux创建macvlan&#xff0c;测试bridge、private和vepa模式 最近在看Docker的网络&#xff0c;看到关于macvlan网络的介绍。查阅了相关资料&#xff0c;记录如下。 参考 1.Linux Macvlan 2.图解几个与Linux网络虚拟化相关的虚拟网卡-VETH/MACVLAN/MACVTAP/IPVLAN 环境 操…

Vue如何请求接口——axios请求

1、安装axios 在cmd或powershell打开文件后&#xff0c;输入下面的命令 npm install axios 可在项目框架中的package.json中查看是否&#xff1a; 二、引用axios import axios from axios 在需要使用的页面中引用 三、get方式使用 get请求使用params传参,本文只列举常用参数…

CAS机制的讲解以及实际项目中的使用

首先要明白cas解决的问题&#xff0c;它是乐观锁的一种解决方式&#xff0c;都是多线程并发情况下解决数据线程按全问题的一种手段-----无锁并发 为什么无锁效率高&#xff1f; 无锁情况下&#xff0c;即使重试失败&#xff0c;线程始终在高速运行&#xff0c;没有停歌&#…

QB/T 2658-2017 卫生设备用台盆检测

卫生设备用台盆根据盆体材质的不同分为陶瓷台盆&#xff0c;钢化玻璃台盆&#xff0c;玻璃纤维增强塑料台盆&#xff0c;不锈钢台盆。搪瓷台盆等&#xff0c;主要用于卫生间、公共设施等场合作为洗手、洗脸用台盆。 QB/T 2658-2017 卫生设备用台盆测试 测试项目 测试标准 外…

山西电力市场日前价格预测【2023-12-24】

日前价格预测 预测说明&#xff1a; 如上图所示&#xff0c;预测明日&#xff08;2023-12-24&#xff09;山西电力市场全天平均日前电价为324.41元/MWh。其中&#xff0c;最高日前电价为456.41元/MWh&#xff0c;预计出现在18:00。最低日前电价为0.00元/MWh&#xff0c;预计出…

thinkphp+vue+mysql酒店客房管理系统 b1g8z

本系统包括前台界面、用户界面和管理员界面、员工界面。在前台界面里游客和用户可以浏览客房信息、公告信息等&#xff0c;用户可以预定客房&#xff0c;在用户中心界面里&#xff0c;用户可以管理预定信息&#xff0c;管理员负责用户预定的审核以及客房的发布、用户的入住等。…

【数据库设计和SQL基础语法】--连接与联接--多表查询与子查询基础(一)

一、引言 多表查询和子查询是数据库中强大的工具&#xff0c;用于在复杂数据结构中提取有价值的信息。其目的在于实现数据关联、筛选和汇总&#xff0c;使得用户能够更灵活地从多个表中检索所需的信息。这种查询方式的重要性体现在解决实际业务需求上&#xff0c;通过有效地组…

PHP开发案例:用PHP写一个简单的蜘蛛统计代码

在前面的文章中我们已经学习了怎么来识别蜘蛛(搜素引擎的爬虫),现在我们来运用我们学习到的知识写一个简单的程序。当然你必须在你需要统计的页面引入spider.php,否则是无法统计到的哦! 一、spider.php <?php function spider(){ $spider=0;//首先定义蜘蛛的默认值为…

Android开发中pcm格式的音频转换为wav格式之一

在我们开发中&#xff0c;会遇到pcm格式的音频转为wav&#xff0c;下面讲解一下具体怎么实现&#xff1a; 第一步&#xff1a;pcm文件转wav文件 /*** pcm文件转wav文件** param inFilename 源文件路径* param outFilename 目标文件路径* param deleteOrg 是否删除源文件*/…