件名にstackoverflowに関する多くの質問と回答がありますが、助けになるものはありません。Avro:デシリアライズjson - オプションのフィールドを持つスキーマ
私は、オプションの値を持つスキーマがあります。
{
"type" : "record",
"name" : "UserSessionEvent",
"namespace" : "events",
"fields" : [ {
"name" : "username",
"type" : "string"
}, {
"name" : "errorData",
"type" : [ "null", "string" ],
"default" : null
}]
}
をそして、私はこのフィールドO/WデシリアライズのJSONをしようとしている:
{
"username" : "2271AE67-34DE-4B43-8839-07216C5D10E1",
"errorData" : { "string":"070226AC-9B91-47CE-85FE-15AA17972298"}
}
コードを使用:
val reader = new GenericDatumReader[GenericRecord](schema)
val decoder = DecoderFactory.get().jsonDecoder(schema, json)
reader.read(null, decoder)
をし、私は得た:org.apache.avro.AvroTypeException: Expected field name not found: errorData
唯一の方法は、
このフィールドO/W JSONをデシリアライズする方法はありJSON
}のですか?
もう一つの問題:
{
"username" : "2271AE67-34DE-4B43-8839-07216C5D10E1",
"errorData" : "070226AC-9B91-47CE-85FE-15AA17972298"
}
:このフィールドはここにあるとき、私は "普通の" JSONをデシリアライズする方法はあり
{
"username" : "2271AE67-34DE-4B43-8839-07216C5D10E1",
"errorData" : { "string":"070226AC-9B91-47CE-85FE-15AA17972298"}
}
書くべきか?
スカラーを使用していますか? – shivam