Maison  >  Article  >  développement back-end  >  Analyse détaillée de la sérialisation json en python

Analyse détaillée de la sérialisation json en python

不言
不言avant
2018-09-30 14:02:472766parcourir

Cet article vous apporte une analyse détaillée de la sérialisation json en python. Il a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer. J'espère qu'il vous sera utile.

La raison pour laquelle j'écris ceci est parce que je suis toujours confus et qu'il est facile de faire des erreurs. Je vais l'écrire et voir si quelque chose arrive

Sérialisation. fait référence à la modification des variables de la mémoire. Le processus qui peut être stocké ou transmis est appelé sérialisation (à l'aide de dump ou de dumps), et le contenu de la variable est relu de l'objet sérialisé vers

. mémoire C'est ce qu'on appelle la désérialisation (en utilisant une ou plusieurs charges)

Si nous voulons transférer des objets entre différents langages de programmation, nous devons sérialiser l'objet dans un format standard, comme XML , mais une meilleure façon est de le sérialiser en JSON, car JSON

est exprimé sous forme de chaîne, qui peut être lue par toutes les langues, et peut également être facilement stockée sur disque ou transmise sur le réseau . JSON est non seulement un format standard, mais aussi plus rapide que XML,

et peut être lu directement dans la page web, ce qui est très pratique

La correspondance entre JSON et les données intégrées de Python types est le suivant :

La méthode dumps() renvoie une chaîne et le contenu est du JSON standard. De même, la méthode dump() peut écrire directement du JSON dans un file_Object. Pour désérialiser JSON en un objet

Python, utilisez charges() ou la méthode load() correspondante. La première désérialise la chaîne JSON, et la seconde lit la chaîne de file_Object et la désérialise Instance

<.>dumps sérialise un objet

data= { "广州市": { "番禺区": ["南村镇", "大石镇", "榄核镇"], "天河区": ["广州塔", "中信广场", "天河又一城"] } }
s = json.dumps(data, sort_keys=True, indent=4, ensure_ascii=False) 
print(s)

#dumps : sérialiser un objet sort_keys : trier selon la clé indent : indenter avec 4 espaces, sortie lisible Ensure_ascii : Peut sérialiser des codes non-ascii (chinois, etc.)

dump : Sérialiser un objet dans un fichier

Le premier paramètre de dump() est l'objet à sérialiser, et le deuxième paramètre est le handle du fichier ouvert. Faites attention lors de l'ouverture du fichier Plus ouvert en codage UTF-8

with open("data.json", "w", encoding="UTF-8") as f: 
    s = json.dump(data, f, ensure_ascii=False)

运行此文件之后在统计目录下会有一个data.json文件

反序列化

load:从一个打开的文件句柄加载数据,注意打开的文件编码

with open("data.json", "r", encoding="UTF-8") as f:
    r = json.load(f)
    print(r)

loads: 从一个对象加载数据

a = json.loads(data) 
print(a)

不加ensure_ascii=False 结果是

加入ensure_ascii=False

a = json.loads(data,ensure_ascii=False)  要注意
print(a)

a=json.loads(input("请输入添加的数据:"),enconding=&#39;utf-8&#39;)
print(a)

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer