Bir Json dizesini bir Avro Şema ile genel bir Java nesnesine dönüştürmeye çalışıyorum.Json Nesne Java Nesnesi Avro
Kodum aşağıda. ": Beklenen başlangıç birliği Got VALUE_NUMBER_FLOAT org.apache.avro.AvroTypeException." İstisna
String json = "{\"foo\": 30.1, \"bar\": 60.2}";
String schemaLines = "{\"type\":\"record\",\"name\":\"FooBar\",\"namespace\":\"com.foo.bar\",\"fields\":[{\"name\":\"foo\",\"type\":[\"null\",\"double\"],\"default\":null},{\"name\":\"bar\",\"type\":[\"null\",\"double\"],\"default\":null}]}";
InputStream input = new ByteArrayInputStream(json.getBytes());
DataInputStream din = new DataInputStream(input);
Schema schema = Schema.parse(schemaLines);
Decoder decoder = DecoderFactory.get().jsonDecoder(schema, din);
DatumReader<Object> reader = new GenericDatumReader<Object>(schema);
Object datum = reader.read(null, decoder);
alıyorum.
Şemada sendikalarım yoksa, aynı kod çalışır. Birisi lütfen bana bir çözüm sunabilir ve verebilir.
http://avro.apache.org/docs/1.7.6/spec.html#json_encoding adresinden, sendikaları kodlayan Json'un farklı olduğunu anlıyorum, ancak herhangi bir yolun olup olmadığını anlamaya çalışıyorum. Json dizesini nesnelere dönüştürebilirim. –
FYI, jsonDecoder() 'ın bir aşırı yükü bir json String'i kabul eder; Onu bir Akışa dönüştürmeye gerek yoktur. – jaco0646