詳細解讀python操作json文件的詳細

json轉化為python表示反序列化

python轉化為json表示為序列化

json是python的內置模塊,不需要安裝

json支持的格式:

Json Python
對象(object) 字典(dict)
數組(array) 列表(list)
字符串(string) 字符串(str)
整數(int) 整數(int)
實數(float) 實數(float)
true True
false False
null None

代碼操作

1.json轉化為python

json提供的兩個函數支持json字符串反序列化為一個python對象

json.loads(s)
其中s表示字符串

import json

str_json = '{"name":"張三","age":24}'
res = json.loads(str_json)
print(res, type(res))  #{'name': '張三', 'age': 24} <class 'dict'>

json.load(fb)
fb:表示為文件對象test.json

test.json

{
  "name":"張三",
  "age":24,
  "friends": [{
    "name": "李四",
    "age": 23
  },
    {
      "name": "王麻子",
      "age": 24
    }],
  "hobby": ["玩遊戲","看電影"]
}
import json

with open('test.json', 'r', encoding='utf-8') as f:
    res = json.load(f)
    print(res, type(res))
  # {'name': '張三', 'age': 24, 'friends': [{'name': '李四', 'age': 23}, {'name': '王麻子', 'age': 24}], 'hobby': ['玩遊戲', '看電影']} <class 'dict'>

json字符串一般不會單獨出現

json.loads('"test"')  #'test'

一般會放在字典或者列表中

json.loads('["test1","test2","test3"]')  #['test1','test2','test3']

2. python序列化為json

json.dumps(obj,ensure_ascii=True,indent=None,sort_keys=False)

  • obj:表示為python 對象
  • ensure_ascii: 默認為 True,輸出保證將所有輸入的非 ASCII 字符轉義。如果 ensure_ascii 是 False,這些字符會原樣輸出。
  • indent:一個非負整數或者字符串,JSON 數組元素和對象成員會被美化輸出為該值指定的縮進等級。如果縮進等級為零、負數或者 “”,則隻會添加換行符。None(默認值)選擇最緊湊的表達。使用一個正整數會讓每一層縮進同樣數量的空格。如果 indent 是一個字符串(比如 “\t”),那個字符串會被用於縮進每一層。
  • sort_keys:為 True(more 為 False),表示字典的輸出會以鍵的順序排序。
import json

data = {
  "name":"張三",
  "age":24,
  "friends": [{
    "name": "李四",
    "age": 23
  },
    {
      "name": "王麻子",
      "age": 24
    }],
  "hobby": ["玩遊戲","看電影"]
}
res = json.dumps(data,ensure_ascii=False,indent=2, )
print(res, type(res))

打印的結果為

{
  “name”: “張三”,
  “age”: 24,
  “friends”: [
    {
      “name”: “李四”,
      “age”: 23
    },
    {
      “name”: “王麻子”,
      “age”: 24
    }
  ],
  “hobby”: [
    “玩遊戲”,
    “看電影”
  ]
} <class ‘str’>

json.dump(obj,fb,ensure_ascii=True,indent=None,sort_keys=False)

  • obj:表示為python對象
  • fb:表示為文本寫打開的文件對象
import json

data = {
  "name":"張三",
  "age":24,
  "friends": [{
    "name": "李四",
    "age": 23
  },
    {
      "name": "王麻子",
      "age": 24
    }],
  "hobby": ["玩遊戲","看電影"]
}
with open('test1.json', 'w', encoding='utf-8') as f:
    json.dump(data, fp=f, ensure_ascii=False, indent=2)

寫入的結果為

test1.json

{
  "name": "張三",
  "age": 24,
  "friends": [
    {
      "name": "李四",
      "age": 23
    },
    {
      "name": "王麻子",
      "age": 24
    }
  ],
  "hobby": [
    "玩遊戲",
    "看電影"
  ]
}

總結

本篇文章就到這裡瞭,希望能夠給你帶來幫助,也希望您能夠多多關註WalkonNet的更多內容!

推薦閱讀: