-
Notifications
You must be signed in to change notification settings - Fork 75
/
Copy pathjson_verify.py
44 lines (40 loc) · 1.34 KB
/
json_verify.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
'''
Python implementation of the Yajl C json_verify application
'''
import six
import os
import sys
BASEPATH = os.path.dirname(os.path.realpath(__file__))
sys.path = [BASEPATH, '%s/..' %BASEPATH] + sys.path
from yajl import __version__ as yajl_version
from yajl import *
import optparse
def main():
opt_parser = optparse.OptionParser(
description='validate json from stdin',
version='Yajl-Py for Yajl %s' %yajl_version)
opt_parser.add_option("-q",
action="store_false", dest="verbose", default=True,
help="quiet mode")
opt_parser.add_option("-c",
dest="allow_comments", action="store_true", default=False,
help="allow comments")
opt_parser.add_option("-u",
dest="dont_validate_strings", action='store_true', default=False,
help="allow invalid utf8 inside strings")
(options, args) = opt_parser.parse_args()
yajl_parser = YajlParser()
yajl_parser.allow_comments = options.allow_comments
yajl_parser.dont_validate_strings = options.dont_validate_strings
retval = 0
try:
yajl_parser.parse()
except YajlError as e:
retval = 1
if options.verbose:
sys.stderr.write(e.value)
if options.verbose:
six.print_("JSON is %s" %("invalid" if retval else "valid"))
raise SystemExit(retval)
if __name__ == "__main__":
main()