【问题标题】:Convert JSON structure to proto-buf structure将 JSON 结构转换为 proto-buf 结构
【发布时间】:2021-12-10 20:17:56
【问题描述】:

我的要求是将数据 JSON 共享给 proto-buf。 我有 JSON 数据。如何编写用于处理所有类型值的模式泛型。

{
  "data": [
    {
      "bool": true
    },
    {
      "string": "abc"
    },
    {
      "int": 22
    },
    {
      "json_object" : {
        "id": 1,
        "email": "example@gmail.com"
      }
    },
    {
      "json_array" : [
          {
            "name":"xyz"
          },
          {
            "age":2
          }
        ]
    }
  ]
}

如果,我正在使用Map<string, string> 地图。仅支持字符串值。 如果,我正在使用Map<string, google.protobuf.Value> 地图。 JSONJSONArray 不支持该值。

如何处理单个架构中的所有类型?谢谢

【问题讨论】:

    标签: java protocol-buffers proto3


    【解决方案1】:

    IIUC 您在询问如何使用协议缓冲区支持任意 JSON。

    因为 Protocol Buffers 需要模式,所以使用 Protocol Buffers 表示通用|任意|无模式类型的最简单方法是使用支持任意内容的类型封装任意类型,即使用 Protocol Buffers stringbytes 类型.

    注意 stringbytes 限制为 2^32 字节

    如果您的 JSON 内容是可能类型的可管理(少数)子集,您可能需要考虑将每种可能性表示为不同的协议缓冲区消息。

    如果您的 JSON 内容有多种可能的类型但可枚举(您可以命名它们),您可能需要考虑Any

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-03-21
      • 2019-09-22
      • 2015-12-11
      • 2018-11-07
      • 2017-10-01
      • 2021-10-18
      • 2011-12-21
      • 2016-01-11
      相关资源
      最近更新 更多