5

根据以下页面,我应该能够发送 json 有效负载:https ://developers.google.com/protocol-buffers/docs/proto3 在“JSON 映射”下。

我想将 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

5 回答 5

9

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

于 2017-01-05T23:22:12.140 回答
2

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

import "google/protobuf/struct.proto";

然后在声明期间,而不仅仅是Struct使用这个词google.protobuf.Struct

于 2018-07-09T20:35:42.130 回答
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;
}


于 2019-08-26T07:01:39.507 回答
0

应该是Struct,有资本S

于 2016-12-15T01:21:44.443 回答
0

我认为问题是它无法从 google/protobuf/struct.proto 导入正确的消息,所以我使用了

google.protobuf.Struct field_name = 1

它对我有用!

于 2021-12-30T07:17:11.233 回答