假定其余端点使用二进制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
}
]
}