Sto provando a convertire una stringa Json in un oggetto Java generico, con uno schema Avro.Oggetto JSON da stringa a Java Avro
Di seguito è riportato il mio codice.
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);
ottengo "org.apache.avro.AvroTypeException: atteso avvio dell'unione Got VALUE_NUMBER_FLOAT." Eccezione.
Lo stesso codice funziona, se non ho unioni nello schema. Qualcuno può spiegarmi e darmi una soluzione.
Da http://avro.apache.org/docs/1.7.6/spec.html#json_encoding, capisco che la codifica Json per i sindacati è diversa, ma sto cercando di capire se c'è un modo, con quale Posso convertire la stringa JSON in oggetto. –
FYI, un sovraccarico di 'jsonDecoder()' accetta una stringa json; non è necessario convertirlo in un flusso. – jaco0646