如何在 .proto 中传入 json 作为有效载荷
How to pass in json as payload in .proto
根据下一页,我应该能够发送 json 有效载荷:https://developers.google.com/protocol-buffers/docs/proto3
在 'JSON Mapping'.
下
我想将 json 负载作为消息的一部分发送,我有以下 .proto 文件:
message EventsRequest{
message RequestElement {
struct payload = 1;
}
string customerId = 1;
repeated RequestElement jsonPayload = 2;
}
message EventsResponse {
int32 status = 1;
string rawResponseData = 2;
struct responseData = 3;
}
但是编译它给我以下错误:
[INFO] Compiling 1 proto file(s) to C:\workspace\...\target\generated-sources\protobuf\java
[ERROR] PROTOC FAILED: msg_service.proto:21:9: "struct" is not defined.
msg_service.proto:34:5: "struct" is not defined.
[ERROR] C:\workspace\...\src\main\proto\msg_service.proto [0:0]: msg_service.proto:21:9: "struct" is not defined.
msg_service.proto:34:5: "struct" is not defined.
我也试过'Struct',但我得到了同样的错误。
我是不是误解了用法?如果我必须发送 json 有效载荷,我是否以字符串形式传递?
谢谢
应该是Struct
,大写S
。
我最终使用 String 来表示 json 有效负载。
如果您想使用 Struct
,您需要先导入:
import "google/protobuf/struct.proto";
然后在声明期间使用 google.protobuf.Struct
而不是 Struct
这个词
应该是这样的,
syntax = "proto3";
package db;
import "google/protobuf/struct.proto";
service Proxy
{
rpc appConfig(UserId) returns (AppConfig);
}
message UserId
{
string userId= 1;
}
message AppConfig
{
Struct appConfig = 1;
}
我认为问题是无法从中导入正确的消息
google/protobuf/struct.proto ,
所以我用了
google.protobuf.Struct field_name = 1
它对我有用!!!
根据下一页,我应该能够发送 json 有效载荷:https://developers.google.com/protocol-buffers/docs/proto3 在 'JSON Mapping'.
下我想将 json 负载作为消息的一部分发送,我有以下 .proto 文件:
message EventsRequest{
message RequestElement {
struct payload = 1;
}
string customerId = 1;
repeated RequestElement jsonPayload = 2;
}
message EventsResponse {
int32 status = 1;
string rawResponseData = 2;
struct responseData = 3;
}
但是编译它给我以下错误:
[INFO] Compiling 1 proto file(s) to C:\workspace\...\target\generated-sources\protobuf\java
[ERROR] PROTOC FAILED: msg_service.proto:21:9: "struct" is not defined.
msg_service.proto:34:5: "struct" is not defined.
[ERROR] C:\workspace\...\src\main\proto\msg_service.proto [0:0]: msg_service.proto:21:9: "struct" is not defined.
msg_service.proto:34:5: "struct" is not defined.
我也试过'Struct',但我得到了同样的错误。
我是不是误解了用法?如果我必须发送 json 有效载荷,我是否以字符串形式传递?
谢谢
应该是Struct
,大写S
。
我最终使用 String 来表示 json 有效负载。
如果您想使用 Struct
,您需要先导入:
import "google/protobuf/struct.proto";
然后在声明期间使用 google.protobuf.Struct
Struct
这个词
应该是这样的,
syntax = "proto3";
package db;
import "google/protobuf/struct.proto";
service Proxy
{
rpc appConfig(UserId) returns (AppConfig);
}
message UserId
{
string userId= 1;
}
message AppConfig
{
Struct appConfig = 1;
}
我认为问题是无法从中导入正确的消息 google/protobuf/struct.proto , 所以我用了
google.protobuf.Struct field_name = 1
它对我有用!!!