【Python網路爬蟲】150講輕鬆搞定Python網路爬蟲付費課程筆記 篇十三——資料儲存:JSON 字串格式

2020-09-23 14:00:24

1. JSON 概述

JSON(JavaScript Object Notation, JS 物件標記)是一種輕量級的資料交換格式,簡潔和清晰的層次結構使得JSON成為理想的資料交換語言。

JSON 支援的資料格式:

  • 物件(字典):花括號
  • 陣列(列表):方括號
  • 字串型別:必須使用雙引號,不能使用的單引號
  • 整形、浮點型、布林型、null等
  • 多個資料之間用逗號隔開
  • json 本質上是一個字串

線上json 解析器:http://json.cn/

{"Person": [{"username": "張三", "age":18}]}

json :
{
    "Person":[
        {
            "username":"張三",
            "age":18
        }
    ]
}

 

2. json 常用函數

2.1 python物件轉換成json字串

  • dumps :把python物件轉換成json 格式字串;
  • dump:把python物件轉換成json格式字串,同時還可以接收一個檔案指標fp引數,可以寫入到檔案

這兩種方法都有一個引數,ensure_ascii 預設情況下時True,即預設只能儲存支援ASCII的字元;如果要儲存中文,將ensure_ascii 引數設為False。

在寫python物件時不需要格外注意遵循json格式要求,只需正確書寫python即可,因為dumps/dump函數會自動將python轉換成json格式。

import json

books = [
    {
        "name": "三國演義",
        "price": 18.8
    },
    {
        "name": "水滸傳",
        "price": 19.9
    }
]
# dumps
result = json.dumps(books, ensure_ascii=False)
print(result, type(result))

#dump
fp = open('books.json', 'w', encoding='utf-8')
json.dump(books, fp, ensure_ascii=False)
fp.close() 
#open 之後需要手動close檔案

2.2 json 字串轉換成python物件

  • loads:將json 字串轉換成python物件
  • load:json 字串轉換成python物件,並且可以直接從檔案中獲取json字串
import json

json_str = '[{"name": "三國演義", "price": 18.8}, {"name": "水滸傳", "price": 19.9}]'

print(type(json_str))
result = json.loads(json_str)
print(result)
print(type(result))

print('*'*20)
# load
with open('books.json', 'r', encoding='utf-8') as fp:
    result = json.load(fp)
    print(result)
    print(type(result))

使用with open 開啟檔案不需要手動關閉檔案

並且在獲取檔案內容時,最好指定好解析的編碼,否則會容易報錯