如何在.proto中传入json作为有效负载

时间:2016-12-15 01:04:02

标签: protocol-buffers grpc proto3 grpc-java

根据以下页面,我应该能够发送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有效负载,我是否以字符串形式传入?

由于

4 个答案:

答案 0 :(得分:2)

我最终使用String来表示json有效负载。

答案 1 :(得分:1)

应该是这样

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;
}


答案 2 :(得分:0)

应为Struct,首都为S

答案 3 :(得分:0)

如果您想使用Struct,则需要先导入

`import "google/protobuf/struct.proto";`

然后在消息声明期间尝试,而不只是单词     Struct使用     google.protobuf.Struct