TEST(Reader, ParseObject_Error) { // Missing a name for object member. TEST_ERROR(kParseErrorObjectMissName, "{1}"); TEST_ERROR(kParseErrorObjectMissName, "{:1}"); TEST_ERROR(kParseErrorObjectMissName, "{null:1}"); TEST_ERROR(kParseErrorObjectMissName, "{true:1}"); TEST_ERROR(kParseErrorObjectMissName, "{false:1}"); TEST_ERROR(kParseErrorObjectMissName, "{1:1}"); TEST_ERROR(kParseErrorObjectMissName, "{[]:1}"); TEST_ERROR(kParseErrorObjectMissName, "{{}:1}"); TEST_ERROR(kParseErrorObjectMissName, "{xyz:1}"); // Missing a colon after a name of object member. TEST_ERROR(kParseErrorObjectMissColon, "{\"a\" 1}"); TEST_ERROR(kParseErrorObjectMissColon, "{\"a\",1}"); // Must be a comma or '}' after an object member TEST_ERROR(kParseErrorObjectMissCommaOrCurlyBracket, "{\"a\":1]"); // This tests that MemoryStream is checking the length in Peek(). { MemoryStream ms("{\"a\"", 1); BaseReaderHandler<> h; Reader reader; EXPECT_FALSE(reader.Parse<kParseStopWhenDoneFlag>(ms, h)); EXPECT_EQ(kParseErrorObjectMissName, reader.GetParseErrorCode()); } }
ParseErrorCode TestString(const char* str) { StringStream s(str); BaseReaderHandler<> h; Reader reader; reader.Parse<kParseValidateEncodingFlag>(s, h); return reader.GetParseErrorCode(); }
int main(int, char*[]) { // Prepare JSON reader and input stream. Reader reader; char readBuffer[65536]; FileReadStream is(stdin, readBuffer, sizeof(readBuffer)); // Prepare JSON writer and output stream. char writeBuffer[65536]; FileWriteStream os(stdout, writeBuffer, sizeof(writeBuffer)); Writer<FileWriteStream> writer(os); // JSON reader parse from the input stream and let writer generate the output. CapitalizeFilter<Writer<FileWriteStream> > filter(writer); if (!reader.Parse(is, filter)) { fprintf(stderr, "\nError(%u): %s\n", static_cast<unsigned>(reader.GetErrorOffset()), GetParseError_En(reader.GetParseErrorCode())); return 1; } return 0; }
int main(int, char*[]) { // Prepare reader and input stream. Reader reader; char readBuffer[65536]; FileReadStream is(stdin, readBuffer, sizeof(readBuffer)); // Prepare writer and output stream. char writeBuffer[65536]; FileWriteStream os(stdout, writeBuffer, sizeof(writeBuffer)); PrettyWriter<FileWriteStream> writer(os); // JSON reader parse from the input stream and let writer generate the output. if (!reader.Parse<kParseValidateEncodingFlag>(is, writer)) { fprintf(stderr, "\nError(%u): %s\n", (unsigned)reader.GetErrorOffset(), GetParseError_En(reader.GetParseErrorCode())); return 1; } return 0; }
int main(int argc, char* argv[]) { if (argc != 2) { fprintf(stderr, "filterkey key < input.json > output.json\n"); return 1; } // Prepare JSON reader and input stream. Reader reader; char readBuffer[65536]; FileReadStream is(stdin, readBuffer, sizeof(readBuffer)); // Prepare JSON writer and output stream. char writeBuffer[65536]; FileWriteStream os(stdout, writeBuffer, sizeof(writeBuffer)); Writer<FileWriteStream> writer(os); // Prepare Filter FilterKeyHandler<Writer<FileWriteStream> > filter(writer, argv[1], static_cast<SizeType>(strlen(argv[1]))); // JSON reader parse from the input stream, filter handler filters the events, and forward to writer. // i.e. the events flow is: reader -> filter -> writer if (!reader.Parse(is, filter)) { fprintf(stderr, "\nError(%u): %s\n", static_cast<unsigned>(reader.GetErrorOffset()), GetParseError_En(reader.GetParseErrorCode())); return 1; } return 0; }