Cette fois, j'avais affaire à un fichier json qui a été parcouru par Lambda sur AWS, et j'ai eu beaucoup de problèmes, je vais donc organiser un peu le code json.
Aucun commentaire n'est inclus. Si vous lisez le flux tout en le rassemblant avec les résultats, vous en comprendrez la signification.
import json
s = r'{"C": "\u3042", "\u3044": {"i": "\u3046", "j": 2}, "B": [{"X": 1, "Y": 10}, {"X": 2, "Y": 20}]}'
print("******************")
print(type(s))
print("s=",s)
print(s[5:20])
print("*****'Chaîne'.encode('Nom de code de caractère')*************")
b = s.encode('cp932')
print(type(b))
print("b=",b)
print(b[5:20])
print("*****b'Chaîne d'octets'.decode('Nom de code de caractère')*************")
c = b.decode('cp932')
print(type(c))
print("c=",c)
print(c[5:20])
print("*****json.loads(s)*************")
dict = json.loads(s)
print(type(dict))
print("dict=",dict)
print(dict["C"])
print("*****json.dumps(dict)*************")
enc = json.dumps(dict)
print(type(enc))
print("enc=",enc)
print(enc[5:20])
print("*****json.loads(enc)*************")
dict2 = json.loads(enc)
print(type(dict2))
print("dict2=",dict2)
print(dict2["je"])
print("*****json.dumps(dict2)*************")
enc = json.dumps(dict2)
print(type(enc))
print("enc=",enc)
print(enc[5:20])
print("*****b.decode("utf-8")*************")
db = b.decode("utf-8")
print(type(db))
print("db=",db)
print(db[5:20])
print("*****k.encode('utf-8')*************")
k = r'{"C": "\u3042", "\u3044": "salut!"}'
ke =k.encode('utf-8')
print("ke=",ke)
jke =json.loads(ke)
print(jke)
print("jke['C']=",jke['C'])
print("jke['je']=",jke['je'])
print("*****json.dumps(dict, default=expireEncoda)*************")
from datetime import datetime
def expireEncoda(object):
if isinstance(object, datetime):
return object.isoformat()
dict = {"now": datetime.now()}
enc = json.dumps(dict, default=expireEncoda)
print("dict=",dict)
print("dict['now']=",dict['now'])
print("enc=",enc)
denc =json.loads(enc)
print("denc['now']=",denc['now'])
La sortie du code ci-dessus est la suivante.
>python ex_jason.py
******************
<class 'str'>
s= {"C": "\u3042", "\u3044": {"i": "\u3046", "j": 2}, "B": [{"X": 1, "Y": 10}, {"X": 2, "Y": 20}]}
"\u3042", "\u3
*****'Chaîne'.encode('Nom de code de caractère')*************
<class 'bytes'>
b= b'{"C": "\\u3042", "\\u3044": {"i": "\\u3046", "j": 2}, "B": [{"X": 1, "Y": 10}, {"X": 2, "Y": 20}]}'
b' "\\u3042", "\\u3'
*****b'Chaîne d'octets'.decode('Nom de code de caractère')*************
<class 'str'>
c= {"C": "\u3042", "\u3044": {"i": "\u3046", "j": 2}, "B": [{"X": 1, "Y": 10}, {"X": 2, "Y": 20}]}
"\u3042", "\u3
*****json.loads(s)*************
<class 'dict'>
dict= {'C': 'Ah', 'je': {'i': 'U', 'j': 2}, 'B': [{'X': 1, 'Y': 10}, {'X': 2, 'Y': 20}]}
Ah
*****json.dumps(dict)*************
<class 'str'>
enc= {"C": "\u3042", "\u3044": {"i": "\u3046", "j": 2}, "B": [{"X": 1, "Y": 10}, {"X": 2, "Y": 20}]}
"\u3042", "\u3
*****json.loads(enc)*************
<class 'dict'>
dict2= {'C': 'Ah', 'je': {'i': 'U', 'j': 2}, 'B': [{'X': 1, 'Y': 10}, {'X': 2, 'Y': 20}]}
{'i': 'U', 'j': 2}
*****json.dumps(dict2)*************
<class 'str'>
enc= {"C": "\u3042", "\u3044": {"i": "\u3046", "j": 2}, "B": [{"X": 1, "Y": 10}, {"X": 2, "Y": 20}]}
"\u3042", "\u3
*****b.decode("utf-8")*************
<class 'str'>
db= {"C": "\u3042", "\u3044": {"i": "\u3046", "j": 2}, "B": [{"X": 1, "Y": 10}, {"X": 2, "Y": 20}]}
"\u3042", "\u3
*****k.encode('utf-8')*************
ke= b'{"C": "\\u3042", "\\u3044": "\xe3\x81\x93\xe3\x82\x93\xe3\x81\xab\xe3\x81\xa1\xe3\x81\xaf\xef\xbc\x81"}'
{'C': 'Ah', 'je': 'salut!'}
jke['C']=Ah
jke['je']=salut!
*****json.dumps(dict, default=expireEncoda)*************
dict= {'now': datetime.datetime(2020, 6, 22, 21, 13, 57, 761568)}
dict['now']= 2020-06-22 21:13:57.761568
enc= {"now": "2020-06-22T21:13:57.761568"}
denc['now']= 2020-06-22T21:13:57.761568
【référence】 ① Maîtrisons les vidages json avec Python! (encodage, foramt, datetime) ② Comment convertir du code de caractère avec Python [Pour les débutants] ③ Lecture / écriture de fichiers / chaînes JSON avec Python
・ Le fichier json peut être extrait en le spécifiant comme type de dictionnaire, 'caractère d'en-tête': ・ Comment identifier les fichiers json;
<class 'dict'>
{'name': 'tarou', 'age': 23, 'gender': 'man'}
<class 'str'>
{"name": "tarou", "age": 23, "gender": "man"}
** ・ json.loads (converti de str en dict) est différent de json.load (lit le fichier JSON en tant que dictionnaire) ** ** ・ json.dumps (convertir de dict en str; peut être converti en chaîne de caractères) est différent de json.dump (enregistrer le dictionnaire sous forme de fichier JSON) ** · Autres. .. ..
Recommended Posts