将二进制和JSON消息反序列化到相同的传输对象

时间:2019-04-14 14:32:36

标签: json avro json-deserialization

假定其余端点使用二进制avro消息。您还希望为用户提供第二个端点,该端点希望传递相同的数据,并遵循相同的avro模式,但他们希望使用JSON发送给定的数据。

本文对此进行了描述,并且可以使用: https://callistaenterprise.se/blogg/teknik/2018/09/25/avro-serialization-with-spring-mvc/

...,除非您需要使用可选字段。我不知道,但是似乎通过联合实现可选性是the_great_mistake,因为它似乎破坏了与普通JSON的兼容性,并且您需要将元数据与数据一起传递,这是不可接受的。我们“无法”强迫客户发送:

{"key":{"string":"value"}}

不只是

{"key":"value"}

据我所知,不可能发送正确的json并使用DecoderFactory.get().jsonDecoder反序列化。

问题: 1.我是对的,这真的不可能吗,还是有某种方法可以反序列化它? 2.假设这是不可能的,还有其他方法如何拥有一个共享的Java TO,将avro和json反序列化到该Java TO吗?我没有要求其他任何相关的内容,而是如何将二进制和json消息反序列化到同一传输对象。

为了便于讨论,我们可以采用模式:

{
  "namespace": "namespace",
  "name": "SomeClass",
  "type": "record",
  "fields": [
    {
      "name": "optionalField",
      "type": ["null", "string"],
      "default": null
    }
  ]
}

0 个答案:

没有答案