0
將動態json類型序列化/反序列化過去一週我一直試圖使用Avro來映射流api中的數據。 我使用ReflectData
從代表json響應的POJO創建我的模式。如何使用Avro
我然後使用ReflectDatumReader將json轉換爲avro字節,並且類似地使用反轉。
我面臨的問題與我得到的json響應有關。響應可以根據發送的消息類型而改變。
即
{
"id": 001,
"text": {
"type": "comment",
"event": "event",
"comment": {
...
}
但是這也可能是
{
"id": 001,
"text": {
"type": "status",
"event": "event",
"status": {
...
}
所以,你可以看到該類型的對象反映了JSON對象的名稱將在後面的內容。 我找不到表示這種模式的方法。過去我使用過傑克遜來表示像這樣的多態類型,但是我找不出用Avro的Java API做到這一點的方法。
我真的很感激任何幫助/建議。 :) 非常感謝。
嘿@davek感謝您的回覆。所以,如果我從他們的規範中獲得了這個權利,似乎不可能有一位能夠管理具有多個名稱的字段的作者。我是否有權假設?即使我可以寫出第一個響應,當'comment'對象變爲'status'時,我會得到一個錯誤。 – Thanos 2014-10-30 17:21:08
這是正確的:您必須定義包含* both *字段的超集架構:然後您可以解析駐留在正在讀取的記錄中的字段。 – davek 2014-10-31 15:08:10