go kratos protobuf 接收动态JSON数据

这篇具有很好参考价值的文章主要介绍了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"文章来源地址https://www.toymoban.com/news/detail-645635.html

func (s *myService) UpdateBook(ctx context.Context, req *api.UpdateBookRequest) (*api.UpdateBookReply, error) {
    ……
    // 接收 data bytes 数据,转化为 json
    data, 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)
	   }  
	}
    ……
}

到了这里,关于go kratos protobuf 接收动态JSON数据的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • JAVA 接收JSON数据,并进行转换处理

    在日常业务中经常需要与外部系统交互处理数据,在此文章中记录一下我在项目中处理json数据流程。 第一种以实体类处理 以文档中的数据结构构建实体类,使字段与需要接收转换的JSON字段变量名尽量保持一致,如果不一致,则会获取不到变量的数值,也可以使用 @JsonPrope

    2024年02月14日
    浏览(44)
  • @RequestBody接收不到前端传递过来的json数据

    我刚开始只是写@RequestBody ParkingRecord parkingRecord 一直获取的都是null, 直到用了Map标签才终于获取到参数了 获取到map的key,就可以获取值了 有人说是前后端参数名称不一致:在实体类的属性上加一个注解 然而这个没有解决我的问题 也有人说是因为lombok的问题,自己用idea的快捷

    2024年02月12日
    浏览(41)
  • 【前端】WebSocket接收二进制数据转JSON并解决中文乱码问题(ArrayBuffer转json)

    WebSocket与mqtt服务器通信,接收二进制数据并将其转为Json使用。一般方式都会出现中文乱码问题。

    2024年01月22日
    浏览(52)
  • golang post https 请求json数据

    在Go语言中发送HTTPS请求并传递JSON数据,可以使用标准库中的 net/http 和 encoding/json 包。HTTPS是基于SSL/TLS的安全协议,可以保护数据在传输过程中不被篡改或窃取。 以下是一个使用HTTPS协议发送POST请求并传递JSON数据的示例代码: 在上面的代码中,我们首先创建一个map类型的

    2024年02月06日
    浏览(31)
  • Protobuf中如何指定json tag

    在 Protocol Buffers (protobuf) 中,可以使用特定的选项来指定生成的 JSON 标签。通过在消息定义中使用 [(json_name)] 选项,可以控制生成的 JSON 字段名称。这样可以确保 Protocol Buffers 和 JSON 之间的互操作性。 下面是一个示例 protobuf 消息定义,其中指定了生成的 JSON 标签: 在上面的

    2024年02月14日
    浏览(21)
  • 使用HTTP方式发送请求及json数据的接收和解析

    目录 需求 请求端 1,添加依赖 2,请求对象 3,请求工具类 4,请求测试(事先开启接收端的服务) 接收端 数据请求模拟 本项目需要通过向对端第三方项目发送一个http的post类型的请求,并且指定了一些请求字段,数据传输采用了json,对请求头没有其他特殊要求,所以这里写

    2024年01月17日
    浏览(38)
  • .net6 接收json数据 Controller http post

    .net6 接收json数据 Controller http post 要添加这两个包 前端ajax请求 关键在contentType 和JSON.stringify 如果这2两个没加上后台还是接收不到的! contentType: “application/json”, 后台接收加上一个 [FromBody] 后台示例 后台完整代码

    2024年02月05日
    浏览(23)
  • 关于java接收json数据为空的解决方案

    2、postman请求参数 3、定位问题 发现问题之后我在网上找了好久都没有解决,最后给同事要了他们之前写的代码通过比较发现代码没问题,考虑是参数传递的时候处理问题,相同时要他们之前通过测试工具测试的时发的请求,最后发现问题所在他们在发送请求的时候都会在h

    2024年02月12日
    浏览(31)
  • protolator - Protobuf <==> json

    github.com/hyperledger/fabric-config/protolator 是 Hyperledger Fabric 中的一个 Go 包,用于将 Protocol Buffers(ProtoBuf)消息和 JSON 格式之间进行转换。它提供了一种方便的方式来将 Fabric 配置文件(以 ProtoBuf 格式表示)与 JSON 配置文件之间进行相互转换。这对于 Fabric 的配置管理和部署非常有

    2024年02月15日
    浏览(26)
  • golang gRPC:根据.protobuf文件生成go代码

    安装 protoc 编译器。如果没有安装,可以参考官方文档进行安装。 使用 protoc 命令生成 gRPC 代码: 此命令将生成 .pb.go 和 _grpc.pb.go 文件,其中包含 protobuf 和 gRPC 的代码实现. –go_out选项会生成纯粹的Protocol Buffer消息代码,这包括Go语言的消息结构体和一些辅助方法。如果你只

    2024年02月14日
    浏览(32)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包