2017-08-10 1 views
0

J'ai une union dans mon schéma avro pour favorite_number qui pourrait être un null ou un int. Quand je JSON encoder l'objet que je reçois:codage json de l'union avro

{ "name": "Alyssa", "favorite_number": { "int": 7}, "favorite_color": null}

Je suis en train de se débarrasser de l'indicateur de type pour l'union, dans ce cas, l'int, de sorte qu'il devient:

{ "name": "Alyssa", "favorite_number": 7, "favorite_color": "bleu"}

schéma avro:

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

I y a-t-il un moyen de le faire? Merci!

+0

Vous devriez montrer du code comment l'avez-vous fait pour obtenir de l'aide? –

+0

Avez-vous trouvé comment résoudre ce problème? – Prashanth

Répondre

0

toute réponse :) Modification

On dirait qu'il est impossible de le faire directement avec l'API Avro. Il y a une demande de tirage en attente pendant un certain temps pour soutenir cette fonction pour les nullables

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

RÉDACTION:

base sur vos commentaires, j'ai trouvé le même problème de sérialisation sans types de données, j'ai fini Utilisation de la fonction toString définie dans https://avro.apache.org/docs/1.8.1/api/java/org/apache/avro/generic/GenericData.html#toString(java.lang.Object), Les seuls cas où cela ne fonctionne pas correctement concernent les schémas avec des références circulaires.

+0

Je ne suis pas sûr de ce que vous voulez dire - pouvez-vous s'il vous plaît élaborer – eng007

+0

merci pour votre réponse, mais ma question est différente. Cela n'a rien à voir avec le schéma avro mais avec la sérialisation json basée sur le schéma avro. Donc quand j'ai une union dans mon schéma je veux que le json sérialisé basé sur le schéma n'inclue pas l'information de type. '{" name ":" Alyssa "," favorite_number ": {" int ": 7}," favorite_color ": null} J'essaie de me débarrasser de l'indicateur de type pour l'union, dans ce cas l'int, pour qu'il devienne: {"name": "Alyssa", "favorite_number": 7, "favorite_color": "bleu"} ' – eng007

+0

@ eng007 hey, j'ai aussi le même problème, trouvez-vous la solution? –