JSON में deserialize और serialize क्या है?


137

मैंने JSON के साथ "deserialize" और "serialize" शब्दों को देखा है। उनका क्या मतलब है?


क्या इससे आपके सवाल का जवाब मिलता है? क्रमबद्धता क्या है?
कोडवर्ड

जवाबों:


229

JSON एक प्रारूप है जो स्ट्रिंग में ऑब्जेक्ट्स को एनकोड करता है। सीरियलाइज़ेशन का अर्थ किसी वस्तु को उस स्ट्रिंग में परिवर्तित करना है , और डीसर्लाइज़ेशन इसका उलटा ऑपरेशन है (स्ट्रिंग बदलें -> ऑब्जेक्ट)

डेटा ट्रांसमिट करते समय या किसी फाइल में स्टोर करते समय, डेटा को बाइट स्ट्रिंग्स की आवश्यकता होती है, लेकिन इस प्रारूप में जटिल ऑब्जेक्ट शायद ही कभी होते हैं। सीरियलाइजेशन इन जटिल वस्तुओं को ऐसे उपयोग के लिए बाइट स्ट्रिंग्स में बदल सकता है। बाइट स्ट्रिंग को प्रेषित करने के बाद, रिसीवर को बाइट स्ट्रिंग से मूल ऑब्जेक्ट को पुनर्प्राप्त करना होगा। इसे डिसेरिएलाइजेशन के रूप में जाना जाता है।

कहो, आपके पास एक वस्तु है:

{foo: [1, 4, 7, 10], bar: "baz"}

JSON में क्रमबद्ध करने से इसे एक स्ट्रिंग में परिवर्तित किया जाएगा:

'{"foo":[1,4,7,10],"bar":"baz"}'

जिसे तार के माध्यम से कहीं भी संग्रहीत या भेजा जा सकता है। रिसीवर तब मूल वस्तु को वापस पाने के लिए इस स्ट्रिंग को निष्क्रिय कर सकता है। {foo: [1, 4, 7, 10], bar: "baz"}


3
@kennytm - मैं तार के ऊपर सामान भेजने के चारों ओर अपना सिर लपेटने की कोशिश कर रहा हूं। भले ही मैं बाइनरी एन्कोडिंग का उपयोग करता हूं या json, xml या proto buf का उपयोग करता हूं - डेटा हमेशा बाइट्स में होना चाहिए इससे पहले कि वे तार पर भेजे जा सकें। क्या यह सच है?
निर्मल

1
@ निर्मल हां। ___
kennytm 15

1
अंतर को याद रखने के लिए मेरे द्वारा उपयोग किया जाने वाला एक एमनोमोनिक डिवाइस यह है कि "सीरियल नंबर में वस्तुओं को बदल देता है"
Janac Meena

1
तो हम क्यों नहीं"{foo: [1, 4, 7, 10], bar: "baz"}"
3

2
@EnricoMariaDeAngelis JSON प्रॉपर्टीज उद्धरणों में होनी चाहिए। यह एक आवश्यकता है - विकि पर पहला उदाहरण की जाँच: en.wikipedia.org/wiki/JSON
बादल

8

डेटा भंडारण के संदर्भ में, क्रमांकन (या क्रमांकन) डेटा संरचनाओं या ऑब्जेक्ट स्थिति का एक प्रारूप में अनुवाद करने की प्रक्रिया है जिसे संग्रहीत किया जा सकता है (उदाहरण के लिए, फ़ाइल या मेमोरी बफर में) या प्रसारित (उदाहरण के लिए, नेटवर्क कनेक्शन पर) लिंक) और बाद में खंगाला। [...]
बाइट्स की एक श्रृंखला से डेटा संरचना को निकालने वाला विपरीत ऑपरेशन, डीरिएरलाइज़ेशन हैविकिपीडिया से

पायथन में "क्रमांकन" केवल दिए गए डेटा संरचना (जैसे dict) को अपने वैध JSON लटकन (ऑब्जेक्ट) में परिवर्तित करने के अलावा और कुछ नहीं करता है ।

  • पायथन के TrueJSONs में परिवर्तित कर दिया जाएगा trueऔर खुद शब्दकोश फिर उद्धरणों में समझाया जाएगा।
  • आप बूलियन मानों द्वारा पायथन डिक्शनरी और JSON के बीच अंतर आसानी से देख सकते हैं:
    • अजगर : True/ False,
    • JSON : true/false
  • पायथन बिलिन मॉड्यूल jsonक्रमांकन करने का मानक तरीका है:

कोड उदाहरण:

data = {
    "president": {
        "name": "Zaphod Beeblebrox",
        "species": "Betelgeusian",
        "male": True,
    }
}

import json
json_data = json.dumps(data, indent=2) # serialize
restored_data = json.loads(json_data) # deserialize

# serialized json_data now looks like:
# {
#   "president": {
#     "name": "Zaphod Beeblebrox",
#     "species": "Betelgeusian",
#     "male": true
#   }
# }

स्रोत: realpython.com


-3

पायथन का उपयोग करके सीरियलाइज़ेशन और डिस्क्रिअलाइज़ेशन की व्याख्या

अजगर में, अचार मॉड्यूल को क्रमांकन के लिए उपयोग किया जाता है। तो, क्रमिक प्रक्रिया को पाइथन में अचार कहा जाता है । यह मॉड्यूल पायथन मानक पुस्तकालय में उपलब्ध है

अचार का उपयोग करके सीरियलाइज़ेशन

import pickle

#the object to serialize
example_dic={1:"6",2:"2",3:"f"}

#where the bytes after serializing end up at, wb stands for write byte
pickle_out=open("dict.pickle","wb")
#Time to dump
pickle.dump(example_dic,pickle_out)
#whatever you open, you must close
pickle_out.close()

PICKLE फ़ाइल (नोटपैड जैसे टेक्स्ट एडिटर द्वारा खोली जा सकती है) में यह (क्रमबद्ध डेटा) होता है:

€} q (KX 6qKX 2qKX fqu।

अचार का उपयोग करते हुए Deserialization

import pickle

pickle_in=open("dict.pickle","rb")
get_deserialized_data_back=pickle.load(pickle_in)

print(get_deserialized_data_back)

आउटपुट:

{1: '6', 2: '2', 3: 'एफ'}


4
उपयोगकर्ता ने JSON के अचार के बारे में नहीं पूछा। यह कुछ हद तक अपमानजनक है।
शाम

यह मूल प्रश्न है: JSON में डिसेरिएलाइज़ और क्रमबद्ध क्या है? मैंने विचार प्रदर्शित करने के लिए पायथन के अचार मॉड्यूल का उपयोग किया। मैंने एक विचार को समझाने के लिए एक उपकरण का उपयोग किया है। आप विचार से अधिक टूल पर ध्यान केंद्रित कर रहे हैं।
आसिफ
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.