如何根据Avro模式使用“map”类型字段格式化JSON PubSub消息

eivgtgni  于 2023-04-22  发布在  其他
关注(0)|答案(1)|浏览(117)

我正在Google Cloud Platform PubSub上测试一个Avro模式定义。我已经将模式简化为:

{
  "type": "record",
  "name": "CloudEvent",
  "fields": [
    {
      "name": "attribute",
      "type": {
        "type": "map",
        "values": ["null", "boolean", "int", "string", "bytes"]
      }
    }
  ]
}

但是,我正在测试的JSON编码消息出现了“Message is invalid against schema”错误。
这是我发送的最简单的消息,意外地给出了错误:

{
    "attribute": {
        "test": "hello"
    }
}

有趣的是,以下消息被认为是有效的:

{
    "attribute": {}
}

这是意料之中的,但会使前面的消息错误更加令人困惑。

iszxjhcz

iszxjhcz1#

请参阅Avro关于JSON编码的规范。具体来说,map具有可空值的事实意味着当它们确实具有值时,您需要以特定方式指定,例如:

{
    "attribute": {
        "test": {
            "string": "hello"
        }
    }
}

相关问题