当前位置: 首页 > news >正文

go kratos protobuf 接收动态JSON数据

前言

google.protobuf.StructGoogle Protocol Buffers 中的一种特殊类型,用于表示动态的键值对数据。它可以存储任意类型的数据,并提供了方便的方法来访问和操作这些数据。

Struct 类型通常用于在不事先知道数据结构的情况下传递和处理配置、参数或其他动态数据。

https://pkg.go.dev/google.golang.org/protobuf/types/known/structpb

代码示例

以下代码,引入了 google/protobuf/struct.proto,该文件定义了 google.protobuf.Struct 类型。

在 UpdateBookRequest 消息中,字段 data 使用 google.protobuf.Struct 类型定义。

syntax = "proto3";import "google/protobuf/struct.proto";message UpdateBookRequest {google.protobuf.Struct data = 1;
}

Kratos 框架,Service 实现方法中,接收 UpdateBookRequest,这时它的 pb 文件中定义为 Data *structpb.Struct protobuf:"bytes,1,opt,name=data,proto3" json:"data"

func (s *myService) UpdateBook(ctx context.Context, req *api.UpdateBookRequest) (*api.UpdateBookReply, error) {……// 接收 data bytes 数据,转化为 jsondata, err := json.Marshal(req.Data)if err != nil {panic(err)}……// 将 json 数据,转化为结构体scene := &structpb.Struct{}  // 这里有一个非 null 判断,其中 app.Data 为数据库中查询if !bytes.Equal(app.Data, []byte("null")) {  err = json.Unmarshal(app.Data, scene)  if err != nil {  panic(err)}  }……
}
http://www.lryc.cn/news/122445.html

相关文章:

  • Python学习笔记第五十四天(Pandas DataFrame)
  • Docker镜像查看下载删除镜像文件的相关命令
  • 1. VisionOS平台介绍
  • 【C#】设置有线网卡IP地址,子网掩码,网关,DNS
  • LVS-DR集群及NGINX负载均衡
  • React如何配置env环境变量
  • VR全景智慧文旅,用科技助力旅游业振兴
  • 系统架构设计专业技能 · 系统安全分析与设计(四)【加解密、数字信封、信息摘要、数字签名、数字书证、网络安全、信息安全】
  • 基于WebSocket的在线文字聊天室
  • VS Code中C++程序的调试(Debug)功能
  • C#四个字节十六进制与单精度浮点数互转
  • Springloc和aop的基础概念
  • 算法练习Day43|● 518. 零钱兑换 II ● 377. 组合总和 Ⅳ
  • 人类:我觉得1+1=956446,你觉得呢?大模型:啊对对对
  • Offset Explorer
  • 查看CentOS版本及系统位数与设置CentOS 7.9 2009 防火墙配置放开端口的命令与过程
  • 前端css高级
  • 华为OD真题--字符串中最小的整数和--带答案
  • 9月30日生效:微软官方服务协议更新,防止人工智能进行逆向工程
  • HarmonyOS教育类APP项目实战系列课结课考试答案(1-10讲)80分就合格
  • 为什么要学习Oracle技术?
  • ffmpeg+intel核显实现硬解码
  • 电脑开机出现Boot Device怎么办?
  • 面试题. 一次编辑
  • Unity悬浮显示提示内容
  • 变形金刚在图像识别方面比CNN更好吗?
  • 【Javascript】ES6新增之类的认识
  • C#随机法 双峰函数 求极值 避免落入局部最优解
  • JavaScript高级:常见设计模式
  • 32bit国产低功耗无线MCU芯片