3

这里是 protobuff 的新手。我正在使用 protobuff 压缩 JSON 文件。问题是这个 JSON 文件来自网络服务器的响应,并且包含名称是随机的某些字段,即每个请求发布到服务器时,键名不同。例如考虑下面的 JSON:

{
  "field1": [
       {
           "abc": "vala",
           "def": "valb",
           "ghi": "valc"
       }
   ],
  "field2": "val2",
  "field3": "val3"
}

在上面的 json 中,字段名称“abc”、“def”、“ghi”每次都可以变化。protobuf 中有没有办法让我完全获得 field1 的值(如单个字符串或其他任何内容)而不会丢失其中的随机字段?

4

1 回答 1

2

我想你想要“struct.proto”,即

syntax = "proto3";
import "google/protobuf/struct.proto";
message Foo {
     .google.protobuf.Struct field1 = 1;
     string field2 = 2;
     string field3 = 3;
}

或者可能(因为数组):

syntax = "proto3";
import "google/protobuf/struct.proto";
message Foo {
     repeated .google.protobuf.Struct field1 = 1;
     string field2 = 2;
     string field3 = 3;
}

但是,我应该强调 protobuf 并不适合解析任意json;为此,您应该使用 json 库,而不是 protobuf 库。

于 2018-08-16T10:42:52.290 回答