Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in / Register
Toggle navigation
R
rapidjson
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Packages
Packages
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
submodule
rapidjson
Commits
89106a13
Commit
89106a13
authored
9 years ago
by
Milo Yip
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Add schema validator example
parent
4ce000b9
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
73 additions
and
0 deletions
+73
-0
CMakeLists.txt
example/CMakeLists.txt
+1
-0
schemavalidator.cpp
example/schemavalidator/schemavalidator.cpp
+72
-0
No files found.
example/CMakeLists.txt
View file @
89106a13
...
...
@@ -9,6 +9,7 @@ set(EXAMPLES
messagereader
pretty
prettyauto
schemavalidator
serialize
simpledom
simplereader
...
...
This diff is collapsed.
Click to expand it.
example/schemavalidator/schemavalidator.cpp
0 → 100644
View file @
89106a13
// Schema Validator example
// The example validates JSON text from stdin with a JSON schema specified in the argument.
#include "rapidjson/error/en.h"
#include "rapidjson/filereadstream.h"
#include "rapidjson/schema.h"
#include "rapidjson/stringbuffer.h"
using
namespace
rapidjson
;
int
main
(
int
argc
,
char
*
argv
[])
{
if
(
argc
!=
2
)
{
fprintf
(
stderr
,
"Usage: schemavalidator schema.json < input.json
\n
"
);
return
EXIT_FAILURE
;
}
// Read a JSON schema from file into Document
Document
d
;
char
buffer
[
4096
];
{
FILE
*
fp
=
fopen
(
argv
[
1
],
"r"
);
if
(
!
fp
)
{
printf
(
"Schema file '%s' not found
\n
"
,
argv
[
1
]);
return
-
1
;
}
FileReadStream
fs
(
fp
,
buffer
,
sizeof
(
buffer
));
d
.
ParseStream
(
fs
);
if
(
d
.
HasParseError
())
{
fprintf
(
stderr
,
"Schema file '%s' is not a valid JSON
\n
"
,
argv
[
1
]);
fprintf
(
stderr
,
"Error(offset %u): %s
\n
"
,
static_cast
<
unsigned
>
(
d
.
GetErrorOffset
()),
GetParseError_En
(
d
.
GetParseError
()));
fclose
(
fp
);
return
EXIT_FAILURE
;
}
fclose
(
fp
);
}
// Then convert the Document into SchemaDocument
SchemaDocument
sd
(
d
);
// Use reader to parse the JSON in stdin, and forward SAX events to validator
SchemaValidator
validator
(
sd
);
Reader
reader
;
FileReadStream
is
(
stdin
,
buffer
,
sizeof
(
buffer
));
if
(
!
reader
.
Parse
(
is
,
validator
)
&&
reader
.
GetParseErrorCode
()
!=
kParseErrorTermination
)
{
// Schema validator error would cause kParseErrorTermination, which will handle it in next step.
fprintf
(
stderr
,
"Input is not a valid JSON
\n
"
);
fprintf
(
stderr
,
"Error(offset %u): %s
\n
"
,
static_cast
<
unsigned
>
(
reader
.
GetErrorOffset
()),
GetParseError_En
(
reader
.
GetParseErrorCode
()));
}
// Check the validation result
if
(
validator
.
IsValid
())
{
printf
(
"Input JSON is valid.
\n
"
);
return
EXIT_SUCCESS
;
}
else
{
printf
(
"Input JSON is invalid.
\n
"
);
StringBuffer
sb
;
validator
.
GetInvalidSchemaPointer
().
StringifyUriFragment
(
sb
);
fprintf
(
stderr
,
"Invalid schema: %s
\n
"
,
sb
.
GetString
());
fprintf
(
stderr
,
"Invalid keyword: %s
\n
"
,
validator
.
GetInvalidSchemaKeyword
());
sb
.
Clear
();
validator
.
GetInvalidDocumentPointer
().
StringifyUriFragment
(
sb
);
fprintf
(
stderr
,
"Invalid document: %s
\n
"
,
sb
.
GetString
());
return
EXIT_FAILURE
;
}
}
This diff is collapsed.
Click to expand it.
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment