当前位置: 首页 > 知识库问答 >
问题:

如何将JSON数组建模为protobuf定义

庄高谊
2023-03-14

我正在用Protobuf在golang写一个新的服务。我想在.proto文件中对以下请求JSON建模。

[
   {
    "var": ["myVariable1","myVariable2"], 
    "key1": 123123,
    "key2": 1122,
    "key3": "abcd-0101"
   },
  { 
    "var": ["myVariable1"], 
    "key1": 123124,
    "key2": 1123,
    "key3": "abcd-0102"
  },
] 

目前存在两个问题:

  • 每个数组元素中的键事先是不知道的,因此我不能在.proto文件中创建消息并重复它。我需要保持它的映射
  • 我无法对json建模,因为它只是一个没有键的数组。每次执行此操作时,都会显示以下错误:解码请求失败:JSON:无法将数组反编入Go值

以下是我的.proto文件:

syntax = "proto3";

package pb;

import "google/protobuf/empty.proto";
import "google/api/annotations.proto";

service Transmitter {
  rpc GetVariables(GetVariablesRequest) returns (GetVariablesResponse) {
    option (google.api.http) = {
                post: "/api/v1/{Service}/getVars"
                body: "*"
            };
  };
}


message GetVariablesRequest {
  string Service = 1;
  repeated GetVarInput in = 2;
}

message GetVariablesResponse {
  string msg = 1;
}

message GetVarInput {
  map<string,string> Input = 2;
}

我尝试过使用字节而不是重复的GetVarInput,但它总是空来。还尝试了body:“*”和body:“in”

请提供一些指示。

共有1个答案

丁晋
2023-03-14

您可以为json编写一条消息,如下所示:

message RequestMessage {
   string var = 0;
   double key1 = 1;
   double key2 = 2;
   string key3 = 3;
}

此外,您可以创建另一个消息,该消息包含requestmessage的数组

message Request {
   repeated RequestMessage request = 0;
}
 类似资料:
  • 问题内容: 我的脚本向我返回了一个数组(JSON数组),如下所示: 我需要打印“ 键 / 对” 值,就像从“ 地图”中进行 打印一样,如下所示: 我收到的JSON格式是否可能与常规JSON格式不同? 我当前的代码基于 Selenium ,它使用 Java脚本 读取性能统计信息,如下所示: _JavaDoc中_的提到了以下情况: 如果脚本具有返回值(即,如果脚本包含return语句),则将执行以下步

  • 问题内容: 我正在尝试解析如下的JSON 到[[“ Jack”,“ Jones”,“ Rock”,“ Taylor”,“ Rob”],[“ Rose”,“ John”],[“ Ted”]]的数组 这是数组的数组。 我尝试了下面的代码 当我打印“人”时,我得到o / p为 我很困惑当“人物”重复3次时如何解析 尝试在UITableView中显示内容,其中第一个单元格具有“ Jack” ..“ Rob

  • 问题内容: 我有一些字典想要转换为JSON。我的对象是类型,并且最终要得到这样的示例: 这是我正在尝试的方法,但是编译器不喜欢我的声明: 我怎样才能做到这一点? 问题答案: 一种简单的实现方法是扩展CollectionType。 使用可选的绑定和向下转换,然后序列化为数据,然后转换为字符串。 输出:

  • 问题内容: 我有一个应用程序,我可以使用我在应用程序中使用的索引以数组&的形式从server(json)中获取数据,如下所示。 对于小尺寸的阵列,我可以得到这样的结果。但是当array包含’n’个元素时,我必须动态地使用它,那时它需要转换为StringArray。有人可以告诉我如何将json数组转换为String数组吗?谢谢 问题答案: 这应该对您有帮助。 编辑: 也许这就是您需要的:

  • 我有以下json字符串,我需要使用java spring boot在csv中转换它们。格式如下。

  • 鉴于我有一个有效的avro模式,如下所示: } 和Json数组,如下所示: ] 将json数组转换为Avro GenericRecord列表的最佳有效方法是什么? 我有以下代码,将一个json对象转换为一个GenericRecord