Heye Vöcking created AVRO-1632:
----------------------------------
Summary: JsonEncoder in Avro C++ dosen't close braces
Key: AVRO-1632
URL: https://issues.apache.org/jira/browse/AVRO-1632
Project: Avro
Issue Type: Bug
Components: c++
Affects Versions: 1.7.7
Environment: Ubuntu 12.04, gcc 4.6.4
Reporter: Heye Vöcking
Please see the example.
Expected output is:
{noformat}
result: '{"re":100.23,"im":105.77}'
{noformat}
Actual output is:
{noformat}
result: '{"re":100.23,"im":105.77'
{noformat}
{code:title=json_encode_example.cc|borderStyle=solid}
#include <fstream>
#include <iostream>
#include <avro/Compiler.hh>
#include <avro/Encoder.hh>
#include <avro/Stream.hh>
#include <avro/ValidSchema.hh>
#include "cpx.hh"
int
main()
{
static size_t CHUNK_SIZE = 8 * 1024;
std::ifstream ifs("examples/cpx.json");
avro::ValidSchema cpxSchema;
avro::compileJsonSchema(ifs, cpxSchema);
std::auto_ptr<avro::OutputStream> out =
avro::memoryOutputStream(CHUNK_SIZE);
avro::EncoderPtr e = avro::jsonEncoder(cpxSchema);
e->init(*out);
c::cpx c1;
c1.re = 100.23;
c1.im = 105.77;
avro::encode(*e, c1);
out->flush();
std::cout << "out->byteCount(): " << out->byteCount() << std::endl;
std::auto_ptr<avro::InputStream> in = avro::memoryInputStream(*out);
avro::StreamReader streamReader(*in);
uint8_t jsonBytes[CHUNK_SIZE];
size_t length = CHUNK_SIZE;
streamReader.readBytes(jsonBytes, length);
std::cout << "in->byteCount(): " << in->byteCount() << std::endl;
std::cout << "result: \'" << jsonBytes << "\'" << std::endl;
for (size_t i = 0; i < 30; i += 1) {
printf("jsonBytes[%02zu]: 0x%02X (%c)\n", i, (unsigned char)
jsonBytes[i], jsonBytes[i]);
}
return 0;
}
{code}
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)