2017-08-10 30 views
0

我在我的avro架構中爲favorite_number可能是null或int。當我JSON編碼的對象,我得到:json avro union的編碼

{ 「名」: 「賈靜雯」, 「favorite_number」:{ 「INT」:7}, 「favorite_color」:空}

我試圖擺脫對於聯合類型的指示器,在這種情況下的整型,使其變成:

{ 「名稱」: 「阿莉莎」, 「favorite_number」:7, 「favorite_color」: 「藍」}

avro schema:

{"name": "person", "type": "record", 
      "fields": [ 
       {"name": "name", "type": "string"}, 
       {"name": "favorite_number", "type": ["null", "int"], "default": null}, 
       {"name": "favorite_color", "type": "string"} 
      ] 
    } 

I有沒有辦法做到這一點?謝謝!

+0

你應該顯示一些代碼你是怎麼做到的? –

+0

你有沒有得到如何解決這個問題? – Prashanth

回答

0

編輯全部答案:)

它看起來是不可能直接與Avro的API做。有一會兒掛起pull請求支持這一對可空類型

https://issues.apache.org/jira/browse/AVRO-1582

編輯:您的意見

基地,我發現想沒有數據類型的序列化同樣的問題,我結束了使用在https://avro.apache.org/docs/1.8.1/api/java/org/apache/avro/generic/GenericData.html#toString(java.lang.Object)中定義的toString函數,它不能正常工作的唯一情況是具有循環引用的模式。

+0

我不確定你的意思 - 請你詳細說明 – eng007

+0

謝謝你的回答,但是我的問題是不一樣的。它不需要使用avro模式,而是使用基於avro模式的json序列化。所以當我在我的模式中有一個聯合時,我想基於模式的序列化的json不包含類型信息。 '{「name」:「Alyssa」,「favorite_number」:{「int」:7},「favorite_color」:null} 我想擺脫聯合的類型指示器,在這種情況下,int,所以它變成: {「name」:「Alyssa」,「favorite_number」:7,「favorite_color」:「blue」}' – eng007

+0

@ eng007嘿,我也有同樣的問題,你找到解決方案嗎? –