def loadJSONFromFileAndValidate(filePath, bStrict=False, bDebugging=False, validation=None): import jk_json from .schema_validator import Validator if validation: with open(filePath, "r", encoding="utf-8") as f: jsonData = jk_json.loads(f.read(), bStrict=bStrict, bDebugging=bDebugging) if isinstance(validation, dict): validator = SchemaParser.parse(validation, None) elif isinstance(validation, Validator): validator = validation else: raise Exception("Unexpected type for argument 'validation': " + repr(validation)) if validator.validate(jsonData): return jsonData else: raise Exception("File " + repr(filePath) + " does not match the expected schema!") else: with open(filePath, "r", encoding="utf-8") as f: return jk_json.loads(f.read(), bStrict=bStrict, bDebugging=bDebugging)
import cProfile from jk_logging import * import jk_json bDebugging = False #bDebugging = True with codecs.open("test-relaxed.json", "r", "utf-8") as f: jsonTextData = f.read() #for t in jk_json.TokenizerRelaxed().tokenize(jsonTextData): # print(t) jsonData = jk_json.loads(jsonTextData, bStrict=False, bDebugging=bDebugging) #print(jk_json.dumps(jsonData, indent="\t")) assert "bla" in jsonData assert isinstance(jsonData["bla"], int) assert jsonData["bla"] == 123 assert "blubb" in jsonData assert isinstance(jsonData["blubb"], list) assert isinstance(jsonData["blubb"][0], int) assert jsonData["blubb"][0] == 2345 assert isinstance(jsonData["blubb"][1], int) assert jsonData["blubb"][1] == -678 assert isinstance(jsonData["blubb"][2], float) assert jsonData["blubb"][2] == 3.1415927
#!/usr/bin/env python3 import jk_json FILE_NAME = "test-relaxed.json" jData = jk_json.loadFromFile(FILE_NAME) print("=" * 160) jk_json.prettyPrint(jData) print("=" * 160) text = jk_json.prettyPrintToStr(jData) jData2 = jk_json.loads(text) print("Parsing again succeeded.")
def loadFromFile(filePath, log=None): with open(filePath, "r") as f: textToParse = f.read() import jk_json jsonDef = jk_json.loads(textToParse) return SchemaParser.parse(jsonDef, log)
def loads(textToParse, log=None): import jk_json jsonDef = jk_json.loads(textToParse) return SchemaParser.parse(jsonDef, log)