Serialize branch data by 'jsondata.jsondataserializer' ****************************************************** The module jsondata.jsondataserializer extends the JSONData class with serialization for JSON documents and substructures. Provided basic operations are: * **json_import**: Import a document or a branch into a document. * **json_export**: Export a document or a branch. Syntax Elements =============== The current release provides the following operators for the class 'JSONPointer'. Import/Export Operations:: ops := json_import | json_export Examples ======== Examples for the provided basic calculations are: Import-Document --------------- * **Branch Operations - import a JSON document**:: # persistent file sources datafile = os.path.abspath(os.path.dirname(__file__))+os.sep+str('datafile.json') schemafile = os.path.abspath(os.path.dirname(__file__))+os.sep+str('schema.jsd') # # set some control keys for the import, refer to API # kargs = {} kargs['datafile'] = datafile kargs['schemafile'] = schemafile kargs['nodefaultpath'] = True kargs['nosubdata'] = True kargs['pathlist'] = os.path.dirname(__file__) kargs['validator'] = MS_DRAFT4 # load JSON data, with validation by draft4 configdata = ConfigData(appname,**kargs) Import-Branch ------------- * **Branch Operations - import a JSON branch**:: # Import another branch into initial main/master data, # and validate it with branch schema. # Use insertion point: # target = configdata.data['phoneNumber'] # partial schema for branch, use here a subtree of main schema, schema = { "$schema": "http://json-schema.org/draft-03/schema", 'phoneNumber':configdata.schema['properties']['phoneNumber'] } # import settings kargs = {} kargs['schema'] = schema kargs['nodefaultpath'] = True kargs['nosubdata'] = True kargs['pathlist'] = os.path.dirname(__file__) kargs['validator'] = MS_DRAFT4 # target container target = configdata.data['phoneNumber'] # do it... datafile = os.path.abspath(os.path.dirname(__file__))+os.sep+str('branch1.json') # use '*args' here ret = configdata.json_import(target, '-', datafile, None, **kargs) assert ret == True Export-Document --------------- * **Branch Operations - export a JSON document**:: # # Export the document. # datafile = os.path.abspath(os.path.dirname(__file__))+os.sep+str('export-doc.json') ret = configdata.json_export(None, datafile) assert ret == True Export-Branch ------------- * **Branch Operations - export a JSON branch**:: # # Export a branch. # datafile = os.path.abspath(os.path.dirname(__file__))+os.sep+str('export-doc.json') branch = JSONPointer('/phoneNumber/0')(configdata.data) ret = configdata.json_export(branch, datafile) assert ret == True