ฉันเห็นคำว่า "deserialize" และ "serialize" กับ JSON พวกเขาหมายถึงอะไร?
ฉันเห็นคำว่า "deserialize" และ "serialize" กับ JSON พวกเขาหมายถึงอะไร?
คำตอบ:
JSON เป็นรูปแบบที่เข้ารหัสออบเจ็กต์ในสตริง อันดับวิธีการแปลงวัตถุเป็นสตริงที่และdeserialization คือการดำเนินการผกผัน (แปลงสตริง -> วัตถุ)
เมื่อส่งข้อมูลหรือจัดเก็บข้อมูลในไฟล์ข้อมูลจะต้องเป็นสตริงไบต์ แต่อ็อบเจ็กต์ที่ซับซ้อนแทบจะไม่มีในรูปแบบนี้ การทำให้เป็นอนุกรมสามารถแปลงวัตถุที่ซับซ้อนเหล่านี้เป็นสตริงไบต์สำหรับการใช้งานดังกล่าว หลังจากส่งสตริงไบต์แล้วผู้รับจะต้องกู้คืนอ็อบเจ็กต์ดั้งเดิมจากสตริงไบต์ สิ่งนี้เรียกว่า deserialization
พูดว่าคุณมีวัตถุ:
{foo: [1, 4, 7, 10], bar: "baz"}
การทำให้อนุกรมเป็น JSON จะแปลงเป็นสตริง:
'{"foo":[1,4,7,10],"bar":"baz"}'
ซึ่งสามารถจัดเก็บหรือส่งผ่านสายไปได้ทุกที่ จากนั้นผู้รับสามารถแยกสายอักขระนี้เพื่อเรียกคืนวัตถุเดิม {foo: [1, 4, 7, 10], bar: "baz"}
.
"{foo: [1, 4, 7, 10], bar: "baz"}"
ในบริบทของการจัดเก็บข้อมูลการทำให้เป็นอนุกรม (หรือการทำให้เป็นอนุกรม) คือกระบวนการแปลโครงสร้างข้อมูลหรือสถานะวัตถุให้อยู่ในรูปแบบที่สามารถจัดเก็บได้ (ตัวอย่างเช่นในไฟล์หรือบัฟเฟอร์หน่วยความจำ) หรือส่งผ่าน (ตัวอย่างเช่นการเชื่อมต่อเครือข่าย ลิงค์) และสร้างขึ้นใหม่ในภายหลัง [... ]
การดำเนินการที่ตรงกันข้ามการแยกโครงสร้างข้อมูลจากชุดไบต์คือการดีซีเรียลไลเซชัน จาก Wikipedia
ใน Python "serialization" ไม่ได้ทำอะไรอื่นนอกจากการแปลงโครงสร้างข้อมูลที่กำหนด (เช่น a dict
) ให้เป็น JSON pendant (object) ที่ถูกต้อง
True
จะถูกแปลงเป็น JSON true
และพจนานุกรมจะถูกห่อหุ้มด้วยเครื่องหมายคำพูดTrue
/ False
,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
คำอธิบายของ Serialize และ Deserialize โดยใช้ Python
ใน python โมดูลดองใช้สำหรับการทำให้เป็นอนุกรม ดังนั้นกระบวนการทำให้เป็นอนุกรมเรียกว่าการดองใน Python โมดูลนี้จะมีอยู่ในห้องสมุดมาตรฐานหลาม
การทำให้เป็นอนุกรมโดยใช้ผักดอง
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 (สามารถเปิดได้โดยโปรแกรมแก้ไขข้อความเช่น notepad) มีข้อมูลนี้ (ข้อมูลต่อเนื่อง):
€} 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: 'f'}