pythonにおけるjsonのシーケンス化と逆シーケンス化

3284 ワード

シーケンス化は、pythonのオブジェクト符号化をjson形式に変換する文字列python--->json逆シーケンス化は、json形式の文字列をpythonデータオブジェクトjson文字列--->pythonデータオブジェクトに復号することと理解できる.
 
一、jsonのdumps()とloads()はデータのシーケンス化と逆シーケンス化を実現することができる
import json
print(json.__all__)  #   json         
# ['dump', 'dumps', 'load', 'loads', 'JSONDecoder', 'JSONDecodeError', 'JSONEncoder']

1、dumps関数のパラメータensure_を付けないascii=False、デフォルトはTrue
dict1 = {"name": "cc", "age": 10}
print("          :", type(dict1))
print("       :", dict1)
print("*"*30)
"""
  :
    ['dump', 'dumps', 'load', 'loads', 'JSONDecoder', 'JSONDecodeError', 'JSONEncoder']
              : 
           : {'name': 'cc', 'age': 10}
"""

2、dict 1のシーケンス化処理
xu_dict1 = json.dumps(dict1)
print("          :", type(xu_dict1))
print("       :", xu_dict1)
print("*"*40)
"""
  :
              : 
           : {"name": "cc", "age": 10}
"""

 
3、dumps関数のパラメータensure_を加えるascii = False
#               
dict2 = {"name":"cc", "address": "  "}
xu_dict2 = json.dumps(dict2)
print("  ensure_ascii=False,          :", type(xu_dict2))
print("ensure_ascii=False,       :", xu_dict2)
print("*"*50)
"""
  :
      ensure_ascii=False,          : 
    ensure_ascii=False,       : {"name": "cc", "address": "\u90d1\u5dde"}
"""

4、中国語があるとき、ensure_ascii=False中国語正常解析、デフォルトensure_ascii = True
 
dict2 = {"name":"cc", "address": "  "}
xu_dict3 = json.dumps(dict2, ensure_ascii=False)
print(" ensure_ascii=False          :", type(xu_dict3))
print(" ensure_ascii=False       :", xu_dict3)
"""
  :
     ensure_ascii=False          : 
     ensure_ascii=False       : {"name": "cc", "address": "  "}
"""

json逆シーケンス化loads()、dump()、load()関数str--->dict
fan_json = json.loads(xu_dict3)
print("         :", type(fan_json))
print("        : ", fan_json)
"""
  :
             : 
            :  {'name': 'cc', 'address': '  '}
"""

dict1 = {"name": "cc", "age": 10}
# json  dump()  ,          json   
with open('data.json', 'w') as f:
    json.dump(dict1, f)

# json load()  ,    json       ,    python
with open('data.json', 'r') as f:
    data = json.load(f)
print(type(data))           #     python  
print(data)                 # {'name': 'cc', 'age': 10}

with open('data.json', 'r') as f:
    print(type(f.read()))  #     json  ,  load()              


dict1 = json.load(open("json      "))   #   json