Writing and Reading Python Objects in JSON Format

Writing and Reading Python Objects in JSON Format – जिस तरह से हमने पिछले Example में Simple Python Object को pickle Module के माध्‍यम से External Disk File में Write/Read किया, Exactly उसी तरह से हम किसी JSON Format Data को भी External Disk File में Write/Read कर सकते हैं।

JSON (JavaScript Object Notation) Data को Represent करने का एक ज्‍यादा बेहतर व आसान तरीका है जिसे वर्तमान समय में उपलब्‍ध लगभग सभी Programming Languages समान रूप से Support करते हैं। ये एक प्रकार से Programming Language Neutral Text Format है और इसे लगभग सभी प्रकार के Operating Systems व Computer Architectures द्वारा Support किया जाता है। MongoDB जैसे Database तो अपने सभी Data को JSON Document Format में ही Store करता है।

pickle Module की तरह JSON विभिन्‍न प्रकार के Python Object Types को Support नहीं करता, लेकिन JSON की Portability ही इसकी वह एक मुख्‍य विशेषता है, जिसकी वजह से ये हमें विभिन्‍न प्रकार के Python Objects को Serialize करके Transmit करने की क्षमता Provide कर देता है।

चूंकि JSON काफी हद तक Python DictionariesLists के समान ही हैं, इसलिए Python के VariablesExpressions, JSON Data को काफी बेहतर तरीके से Handle करने की सुविधा देते हैं। इसलिए हम Python के किसी भी Dictionary को बिना किसी तरह का Modification किए हुए बड़ी ही आसानी से तुरन्‍त JSON Format में Represent कर सकते हैं।

लेकिन फिर भी Python Objects को JSON Serialize Format में और JSON Serialize Format को Python Object में Translate करने के लिए Python हमें json नाम का एक Standard Library Module Provide करता है, जिसका प्रयोग करते हुए हम Standard तरीके से Python Object को JSON Serialized Format की तरह File में Write कर सकते हैं और File में Written JSON Serialized Format को Python Object की तरह Read कर सकते हैं। इस प्रक्रिया को निम्‍न Example द्वारा ज्‍यादा बेहतर तरीके से समझा जा सकता है-

[code]
FileName: PythonObjectInJSONFormatInFile.py
import json

# Create Record Using Dictionary
dicName = dict(fName='KRISHNA', lName='YADAV')
dicRecord = dict(name=dicName, job=['Neatherd'], age=20)
print("Record: \n", dicRecord, "\n")

# Encode Dictionary into JSON Object
strJSON = json.dumps(dicRecord)
print("Record in JSON Format: \n", strJSON, "\n")

# Decode JSON into Dictionary Object
dicFromJSONString = json.loads(strJSON)
print("Record in JSON Format: \n", dicFromJSONString)

# Write JSON Data as String into the File
fpRecord = open("records.txt", "w")
print("Write Dictionary Object in File as JSON Data String", "\n")
json.dump(dicRecord, fpRecord, indent=3)
fpRecord.close()

# Read Data as String from the File
fpRecord = open("records.txt", "r")
print("Read Dictionary Object from File as JSON Data String")
print(fpRecord.read())
fpRecord.close()
print()

# Load File Data as JSON Object
fpRecord = open("records.txt", "r")
print("Load File Data as JSON Object")
strJSON = json.load(fpRecord)
print(strJSON)
fpRecord.close()

Output
Record:
 {'name': {'fName': 'KRISHNA', 'lName': 'YADAV'}, 'job': ['Neatherd'], 'age': 20}
Record in JSON Format:
 {"name": {"fName": "KRISHNA", "lName": "YADAV"}, "job": ["Neatherd"], "age": 20}
Record in JSON Format:
 {'name': {'fName': 'KRISHNA', 'lName': 'YADAV'}, 'job': ['Neatherd'], 'age': 20}
Write Dictionary Object in File as JSON Data String
Read Dictionary Object from File as JSON Data String
{
   "name": {
      "fName": "KRISHNA",
      "lName": "YADAV"
   },
   "job": [
      "Neatherd"
   ],
   "age": 20
}
Load File Data as JSON Object
{'name': {'fName': 'KRISHNA', 'lName': 'YADAV'}, 'job': ['Neatherd'], 'age': 20}
[/code]

इस Example में सबसे पहले हमने एक dicName व dicRecord नाम के दो Dictionary Objects Create किए हैं और dicName को dicRecord Object में Nest किया है। जब हम इसे Display करते हैं, तो हमें निम्‍नानुसार Output प्राप्‍त होता है-

Record:

 {‘name’: {‘fName’: ‘KRISHNA’, ‘lName’: ‘YADAV’}, ‘job’: [‘Neatherd’], ‘age’: 20}

फिर हमने निम्‍नानुसार अगले Statement द्वारा json.dumps() Method का प्रयोग करते हुए इस dicRecord Dictionary को JSON Serialized String Representation के रूप में Translate किया है-

strJSON = json.dumps(dicRecord)

जिसे Display करने पर हमें निम्‍नानुसार Output प्राप्‍त होता है-

Record in JSON Format:

 {“name”: {“fName”: “KRISHNA”, “lName”: “YADAV”}, “job”: [“Neatherd”], “age”: 20}

हम देख सकते हैं कि इन दोनों ही Outputs में कोई अन्‍तर नहीं है। यानी Python का Dictionary Object, एक तरह से JSON Format के रूप में ही Python Data को Represent करता है और हम जब चाहें तब बड़ी ही आसानी से Python Dictionary Object को JSON Serialized String में और JSON Serialized String को Python Dictionary Object में Translate कर सकते हैं।

एक JSON Serialized String Representation को Python Object में Translate करने के लिए json Module हमें json.loads() Method Provide करता है, जिसे हम निम्‍नानुसार Use कर सकते हैं-

dicFromJSONString = json.loads(strJSON)

जब एक बार हम इस तरह से JSON Serialized String Representation को loads() Method द्वारा Python Object में Translate कर लेते हैं, उसके बाद हम उस Particular Object पर प्रत्‍येक Python Operation को Exactly उसी तरह से Apply कर सकते हैं, जिस तरह से उसी Type के अन्‍य Python Object पर करते हैं।

उदाहरण के लिए इस Example में JSON Serialized String Representation से एक Dictionary Object Return हो रहा है, इसलिए इस Dictionary Object पर हम हर उस Operation को Apply कर सकते हैं, जिसे किसी अन्‍य Dictionary Object पर Apply किया जा सकता है।

हम किसी भी Python Object को JSON Serialized String Representation में Translate करने के बाद उसे External File Object के माध्‍यम से किसी External File में Write भी कर सकते हैं, जिसके लिए हमने हमारे इस Example Program में निम्‍नानुसार json.dump() Method को Use किया है-

json.dump(dicRecord, fpRecord, indent=3)

ये Method पहले Argument के रूप में उस Python Object को Accept करता है, जिसे दूसरे Parameter के रूप में Specified File Object से Associated External File में Write करना है साथ ही तीसरे Parameter के रूप में हमने indent=3 Specify करके Python को इस बात का Instruction भी दे दिया है, कि File में Write होने वाला JSON Format 3 Characters के Tab Indenting के साथ Write हो।

फिर अगले Statement में read() Method का प्रयोग करके हमने इसी File के Content को Read किया, जो कि निम्‍नानुसार Output Return करता है-

[code]
{
   "name": {
      "fName": "KRISHNA",
      "lName": "YADAV"
   },

   "job": [
      "Neatherd"
   ],

   "age": 20
}
[/code]

जहां हम देख सकते हैं कि हमारा JSON Serialized String Representation Exactly उसी तरह से दिखाई दे रहा है, जिस तरह से हम इसे Manually Specify करते हैं।

अन्तिम Code Segment में हमने हमारी External Text File में Stored JSON Serialized String Representation को Python Object के रूप में ही Read करने के लिए json Module के json.load() Method को निम्‍नानुसार तरीके से Use किया है-

strJSON = json.load(fpRecord)

ये Method हमारी External Text File से JSON Serialized String Representation को Read करता है और उसे एक Appropriate Python Object के रूप में Return करता है। इसका परिणाम ये होता है कि हम उस Object को Exactly उसी तरह से Use कर सकते हैं, जिस तरह से Python में Created किसी अन्‍य Object को Use करते हैं।

इस Example में हमने json.loads()json.load() नाम के दो अलग Methods को Use किया है। दोनों में केवल इतना ही अन्‍तर है कि json.loads() Method, Python Object को Current Program में ही In-Memory String Format में Translate करता है, जबकि json.load() Method, Python Object को किसी File से Current Program में एक Object की तरह Return करता है।

Exactly इसी तरह से json.dump() व json.dumps() Method में भी यही अन्‍तर है जहां json.dumps() Method Current Program में ही Python Object को In-Memory String Format में Serialize करता है, वहीं json.dump() Method, Python Object को किसी File में JSON Serialized Format में Write करता है।

इन्‍हें आसानी से याद रखने का तरीका ये है कि जहां पर भी “s” Character Add हो जाता है, वो String पर Apply होता है, जैसे dumps(), loads(). जबकि Method Name में Character “s” न हो, तो उस स्थिति में वह Method, File Object पर Apply होता है। जैसे dump(), load(), etc…

JSON सभी Strings UNICODE Encoding में ही होती हैं, ताकि International Character Sets भी आसानी से Handle हो जाऐं। साथ ही जिस तरह से JSON Support के लिए Python हमें json Module Provide करता है, Exactly उसी तरह से XML व CSV Support के लिए भी Python हमें xml व csv Module Provide करता है। इन सभी Libraries के बारे में विस्‍तृत वर्णन प्राप्‍त करने के लिए आप Python के Documentation का अध्‍ययन कर सकते हैं।

Writing and Reading Native Python Objects Using Pickle
Python – Assignment Statements

Python in Hindi - BccFalna.comये Article इस वेबसाईट पर Selling हेतु उपलब्‍ध EBook Python in Hindi से लिया गया है। इसलिए यदि ये Article आपके लिए उपयोगी है, तो निश्चित रूप से ये EBook भी आपके लिए काफी उपयोगी साबित होगी।

Python in Hindi | Page: 602 | Format: PDF

BUY NOW GET DEMO REVIEWS