go中parsefrom怎么接受application/json的参数

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了go中parsefrom怎么接受application/json的参数相关的知识,希望对你有一定的参考价值。

参考技术A 你应该用的是fastjson吧! JSONObject jsonObj = JSON.parseObject(str);//str是个字符串 可以将str转化为相应的JSONObject对象,其中str是“键值对”形式的json字符串,转化为JSONObject对象之后就可以使用其内置的方法,进行各种处理了。本回答被提问者采纳

如何确定protobuf中的消息类型,以便我可以使用该类型.parsefrom(byte [])

我试图将cpp端的protobuf数据发送到java端。

我在.proto中定义了多种消息类型

在Cpp方面,我有每个消息类型的枚举,我将它添加到buf输出,如下所示:

uint8_t* __temp = (uint8_t*)(buf);
*__temp++ = (type) >> 8;
*__temp = (type) & 0x00FF;

如何获得我添加到buf中的“类型”,以便我可以实现类似的功能

MessageType parseFrom(byte[] data);
答案

目前尚不清楚具体要求是什么。但我假设你正在尝试发送不同类型的消息,接收器应该能够从接收到的字节中解析出正确的对象。这可以如下例所示完成:

message Message1 
   required string a = 1;
   required string b = 2;


message Message2 
   required int64 id = 1;
   required string data = 2;





message WrapperMessage 
    required int64 commonField = 1;
    oneof msg 
        Message1 m1 = 2;
        Message2 m2 = 3;
       

基本上,总是通过包装Message1或Message2对象的线路发送WrapperMessage对象。然后在接收端,我们可以先解析WrapperMessage对象,然后使用HasField方法检查包装对象中是否存在m1或m2字段,然后解析Message1或Message2对象。

旧版本的protobuf编译器可能无法使用“oneof”功能。

另一答案

Protobuf 3引入了一个新概念Any来处理这个问题。可以找到一个很好的描述here

以上是关于go中parsefrom怎么接受application/json的参数的主要内容,如果未能解决你的问题,请参考以下文章

接受任何频道的 go 函数

GO桌面主题制作工具应用程序错误怎么回事

Go 系列教程 ——第 19 部分:接口

go语言-interface的值接收和指针接受的区别

go语言-interface的值接收和指针接受的区别

go语言-interface的值接收和指针接受的区别