Trong hướng dẫn này, bạn sẽ học các kỹ thuật xử lý JSON khác nhau như tải các đối tượng JSON, viết, sắp xếp JSON hoặc phân tích cú pháp JSON, v.v.
JSON là viết tắt của Ký hiệu đối tượng JavaScript đại diện cho dữ liệu có cấu trúc. Dữ liệu JSON được sử dụng để trao đổi thông tin
Trong Python, chúng ta có thể sử dụng JSON bằng cách nhập mô-đun Python tích hợp có tên là json. Mô-đun json mã hóa và giải mã dữ liệu JSON
Mục lục
1- Tại sao lại sử dụng JSON?
- Đọc tệp JSON
- Nhận giá trị JSON
- Cập nhật & Xóa đối tượng JSON
- Sắp xếp JSON
- Tạo các đối tượng JSON
- Viết JSON vào tệp
- Phân tích cú pháp JSON
- Đối tượng với JSON
- JSON để phản đối
- Byte sang JSON
- Chuyển đổi HTML sang JSON
- JSON sang SQL
- Tải JSON[] VS tải[]
- Kết xuất JSON[] VS tải[]
Tại sao lại sử dụng JSON?
JSON chứa dữ liệu mà con người và máy móc có thể đọc được. Mục đích chính của việc sử dụng JSON trong Python là lưu trữ và truy xuất danh sách, bộ dữ liệu và từ điển
Hầu hết các API sử dụng định dạng JSON để truyền thông tin. Tương tự, nếu bạn có một tập dữ liệu lớn, bạn có thể mã hóa dữ liệu ở định dạng JSON và lưu trữ trong cơ sở dữ liệu
Cú pháp nạp gói này như sau
cú pháp
import json
Đọc tệp JSON
Để đọc dữ liệu từ tệp JSON, chúng ta có thể sử dụng phương thức load[] hoặc loading[]
Đọc dữ liệu JSON trong Python có nghĩa là chuyển đổi đối tượng JSON thành đối tượng Python. Việc chuyển đổi các đối tượng JSON thành các đối tượng Python được gọi là khử tuần tự hóa. Chẳng hạn, một mảng JSON tương đương với một danh sách trong Python
Cú pháp cho load[] được đưa ra dưới đây
cú pháp
data = json.load[object]
- 'đối tượng' là đối tượng JSON sẽ được tải sau khi câu lệnh được thực thi và sẽ được lưu trữ trong biến 'dữ liệu' dưới dạng đối tượng Python
Hãy xem xét đối tượng JSON sau đây
Mã số
{ "date": "2021-07-17", "firstname": "Hamza", "lastname": "Sher", "city": "Kyoto", "array": [ "Carmela", "Ashlee", "Alisha" ], "array of objects": [ { "index": 0, "index start at 5": 5 }, { "index": 1, "index start at 5": 6 }, { "index": 2, "index start at 5": 7 } ] }
Đoạn mã sau in các giá trị cho khóa 'mảng' bên trong đối tượng JSON của chúng tôi
Mã số
import json jsonFile = open['jsonData.json'] data = json.load[jsonFile] print[data] jsonFile.close[]
đầu ra
Nếu chúng ta có một chuỗi đang lưu trữ đối tượng JSON, chúng ta có thể sử dụng phương thức loading[] để đọc chuỗi đó
cú pháp
data = json.loads[jsonString]
Đoạn mã sau in Chuỗi JSON
Mã số
import json jsonData = '{"Name": "Hamza", "ID":"12345"}' data = json.loads[jsonData] print[data]
đầu ra
Nhận giá trị JSON
Các đối tượng JSON được xây dựng theo các cặp khóa-giá trị, giúp việc lấy một giá trị cụ thể từ đối tượng trở nên rất đơn giản. Chúng tôi có thể sử dụng chỉ mục từ điển để truy cập giá trị được liên kết với khóa
cú pháp
data['firstname']
Đoạn mã sau minh họa cách chúng ta có thể sử dụng nó để đạt được kết quả mong muốn
Mã số
import json jsonFile = open['jsonData.json'] data = json.load[jsonFile] print[data['firstname']] jsonFile.close[]
đầu ra
Cập nhật & Xóa đối tượng JSON
Cập nhật một đối tượng JSON trong Python cũng đơn giản như sử dụng hàm update[] tích hợp từ gói json mà chúng tôi đã nhập
Phương thức cập nhật được sử dụng để thêm một cặp khóa-giá trị mới vào chuỗi JSON mà chúng tôi đã khai báo trong mã của mình. Chúng ta có thể thêm một cặp khóa-giá trị hoặc thêm toàn bộ từ điển sẽ được thêm vào chuỗi JSON trước đó
cú pháp
________số 8Đoạn mã sau triển khai phương thức update[]
Mã số
import json jsonData = '{"ID":"123", "Name": "Hamza"}' data = json.loads[jsonData] newData = {"DOB": "22-10-2001"} data.update[newData] print[data]
đầu ra
Từ điển 'newData' đã được thêm vào đối tượng 'jsonData'. Đây là cách phương thức update[] thực hiện chức năng của nó
Chuyển sang chức năng xóa. Không có chức năng tích hợp trong gói json để xóa cặp khóa-giá trị. Do đó, chúng ta sẽ phải viết thêm một chút mã để thực hiện chức năng này
Đây là cách chúng ta có thể thực hiện xóa trên một đối tượng JSON. Hãy nhớ rằng chúng tôi đang sử dụng cùng một tệp JSON mà chúng tôi đang sử dụng và đã đề cập ở phần đầu của hướng dẫn này
Mã số
data = json.load[object]0
đầu ra
Chúng ta hãy xem những gì đang thực sự xảy ra ở đây. Khi chúng tôi kiểm tra xem 'firstname' có tồn tại trong từ điển hay không, Python sẽ kiểm tra từ điển và nếu khóa tồn tại, chúng tôi có thể sử dụng từ khóa del để xóa cặp khóa-giá trị đó
Sắp xếp JSON
Chúng ta có thể sắp xếp một đối tượng JSON theo thứ tự bảng chữ cái dựa trên các khóa. Để làm điều này, chúng tôi sử dụng json. phương thức dumps[] cùng với một vài đối số cho phương thức. Cú pháp sử dụng phương thức này như sau
cú pháp
data = json.load[object]1
Ở đây chúng tôi chuyển hai đối số cho hàm json. bãi []. Cái đầu tiên 'dữ liệu' chứa đối tượng JSON mà chúng tôi đã lưu trữ trong một biến Python
Thứ hai là đối số sort_keys, khi được đặt thành True, sắp xếp dữ liệu theo thứ tự bảng chữ cái và trả về đối tượng JSON dưới dạng chuỗi. Đoạn mã sau sử dụng chức năng này
Mã số
data = json.load[object]2
đầu ra
Nhìn vào mã, khá dễ hiểu chuyện gì đang xảy ra. Đầu tiên, chúng tôi đang tải dữ liệu và lưu trữ nó vào biến 'dữ liệu' và đóng tệp sau đó
Sau đó, trong một câu lệnh, chúng tôi in dữ liệu đã sắp xếp với sự trợ giúp của hàm json. dumps[] và đối số sort_keys=True
Tạo các đối tượng JSON
Để tạo một đối tượng JSON, chúng ta cần có một từ điển Python sẽ chứa dữ liệu của chúng ta. Chúng tôi sẽ sử dụng phương pháp tương tự như chúng tôi đã sử dụng trước khi tôi. e. , json. bãi [] và json. tải []. Đoạn mã sau thực hiện chức năng này
Mã số
data = json.load[object]3
đầu ra
Ở đây chúng tôi định nghĩa một số dữ liệu dưới dạng từ điển Python. Sau đó, chúng tôi sử dụng json. dumps[] và chuyển từ điển Python làm đối số
Điều này chuyển đổi từ điển Python của chúng tôi thành một chuỗi có thể được chuyển đến json. phương thức tải []. Sau đó, json. loading[] chuyển đổi chuỗi này thành Đối tượng JSON và chúng ta có thể thấy đầu ra khi nó được in
Viết JSON vào tệp
Để ghi một đối tượng JSON vào tệp JSON, chúng ta có thể sử dụng lệnh json. phương thức đổ []. Phương thức này lấy dữ liệu mà chúng ta sẽ ghi vào tệp và cũng là tệp mà chúng ta sẽ ghi dữ liệu vào. Đoạn mã sau giải thích cách chúng ta có thể làm điều đó
Mã số
data = json.load[object]4
đầu ra
Đầu tiên ta mở file ở chế độ đọc và lưu trữ nội dung của file vào biến ‘data’. Sau đó, chúng tôi cập nhật 'dữ liệu' và thêm cặp khóa-giá trị mới vào biến này
Sau đó, chúng tôi mở lại tệp ở chế độ ghi. Chúng tôi sử dụng json. dump[] và chuyển nó vào dữ liệu và tệp dưới dạng tham số và đóng tệp sau đó
Đầu ra cho thấy dữ liệu đã được cập nhật và chúng tôi có thể xác nhận điều này bằng cách xem tệp json
Phân tích cú pháp JSON
Chúng ta có thể phân tích một chuỗi JSON trong Python bằng cách sử dụng json. phương thức tải []. Phương thức này chuyển đổi chuỗi JSON thành một từ điển Python có thể được lập chỉ mục dựa trên các khóa có trong từ điển
cú pháp
data = json.load[object]5
Ở đây 'jsonString' là chuỗi JSON được truyền vào phương thức dưới dạng đối số. Phương thức này sẽ phân tích cú pháp chuỗi JSON và trả về một từ điển Python có thể được lưu trữ thêm trong một biến
Chúng ta cũng có thể thực hiện tất cả các phương thức từ điển trên biến này. Đoạn mã sau thực hiện chức năng này
Mã số
data = json.load[object]6
đầu ra
Trong mã này, chúng tôi đang chuyển chuỗi JSON 'dữ liệu' làm đối số cho phương thức json. loading[] trả về một từ điển được lưu trữ trong biến 'json_data'. Câu lệnh in xác minh rằng phương thức đã chạy thành công
Đối tượng với JSON
Các đối tượng Python có thể được chuyển đổi thành JSON bằng cách sử dụng cùng một json. dumps[] mà chúng ta đã thảo luận trước đó. Chúng ta hãy xem làm thế nào điều này sẽ được thực hiện
Mã số
data = json.load[object]7
đầu ra
Trong mã này, trước tiên chúng ta tạo một lớp Xe hơi và sau đó tạo một đối tượng của lớp này
Sau đó, chúng tôi sẽ sử dụng json. dumps[] và chuyển đối tượng car thành ‘car. __dict__'. '__dict__' chuyển đổi tất cả các biến thành viên thành từ điển và chuyển nó tới json. phương thức bãi []
Như chúng ta có thể thấy từ đầu ra, đối tượng đã được chuyển đổi thành JSON
JSON để phản đối
Để chuyển đổi một chuỗi JSON thành một đối tượng Python, chúng ta sẽ cần một lớp có đối tượng mà chúng ta phải tạo và sử dụng json. phương thức loading[] như sau
Mã số
data = json.load[object]8
đầu ra
Ở đây, chúng tôi đã tải dữ liệu vào biến 'dữ liệu' và sau đó chuyển từ điển này sang lớp ô tô dưới dạng đối số từ khóa. Chúng ta có thể thấy trong đầu ra rằng đối tượng đã được tạo
Byte sang JSON
Chuyển đổi một chuỗi byte hoặc từ điển thành JSON rất đơn giản. Chúng ta chỉ cần sử dụng json tích hợp. hàm bãi []
cú pháp
data = json.load[object]9
Đoạn mã sau minh họa chức năng này
Mã số
{ "date": "2021-07-17", "firstname": "Hamza", "lastname": "Sher", "city": "Kyoto", "array": [ "Carmela", "Ashlee", "Alisha" ], "array of objects": [ { "index": 0, "index start at 5": 5 }, { "index": 1, "index start at 5": 6 }, { "index": 2, "index start at 5": 7 } ] }0
đầu ra
Ở đây, trước tiên chúng tôi đã xác định một chuỗi byte và sau đó giải mã nó thành bộ ký tự 'utf-8'. Sau đó, chúng tôi chỉ cần sử dụng json. dumps[] để chuyển đổi chuỗi thành Chuỗi JSON
Chuyển đổi HTML sang JSON
Để chuyển đổi HTML thành một đối tượng JSON, chúng ta sẽ phải sử dụng một gói Python khác có tên là html-to-json. Những gì gói này làm về cơ bản là lấy một tệp HTML và chuyển đổi nó thành một đối tượng JSON
Chúng tôi có thể cài đặt gói này bằng cách sử dụng lệnh sau trong dấu nhắc lệnh hoặc thiết bị đầu cuối của chúng tôi
cú pháp
{ "date": "2021-07-17", "firstname": "Hamza", "lastname": "Sher", "city": "Kyoto", "array": [ "Carmela", "Ashlee", "Alisha" ], "array of objects": [ { "index": 0, "index start at 5": 5 }, { "index": 1, "index start at 5": 6 }, { "index": 2, "index start at 5": 7 } ] }1
Đầu tiên, chúng ta cần nhập nó vào chương trình của mình
cú pháp
{ "date": "2021-07-17", "firstname": "Hamza", "lastname": "Sher", "city": "Kyoto", "array": [ "Carmela", "Ashlee", "Alisha" ], "array of objects": [ { "index": 0, "index start at 5": 5 }, { "index": 1, "index start at 5": 6 }, { "index": 2, "index start at 5": 7 } ] }2
Sau khi nhập, bây giờ chúng ta có thể viết mã của mình để chuyển đổi tệp HTML thành đối tượng JSON. Đây là tệp HTML mẫu mà chúng tôi sẽ sử dụng
Mã số
{ "date": "2021-07-17", "firstname": "Hamza", "lastname": "Sher", "city": "Kyoto", "array": [ "Carmela", "Ashlee", "Alisha" ], "array of objects": [ { "index": 0, "index start at 5": 5 }, { "index": 1, "index start at 5": 6 }, { "index": 2, "index start at 5": 7 } ] }3
Bây giờ, chúng ta sẽ chuyển sang viết mã để chuyển đổi HTML này thành JSON
Mã số
{ "date": "2021-07-17", "firstname": "Hamza", "lastname": "Sher", "city": "Kyoto", "array": [ "Carmela", "Ashlee", "Alisha" ], "array of objects": [ { "index": 0, "index start at 5": 5 }, { "index": 1, "index start at 5": 6 }, { "index": 2, "index start at 5": 7 } ] }4
đầu ra
Trong mã này, chúng tôi sử dụng gói html-to-json để chuyển đổi HTML thành json. Chúng tôi đã sử dụng html_to_json. convert[] cho mục đích này và chuyển chuỗi chứa HTML mong muốn
JSON sang SQL
Để chuyển đổi một đối tượng JSON thành một bảng SQL, cần thêm một vài bước so với việc chỉ sử dụng một phương thức duy nhất. Ở đây chúng tôi đang sử dụng hai gói mới mà chúng tôi chưa sử dụng trước đây
Đầu tiên là gói Pandas là một công cụ phân tích dữ liệu. Chúng tôi sẽ sử dụng nó để chuyển đổi đối tượng JSON của chúng tôi thành Khung dữ liệu Pandas
Gói thứ hai là sqlalchemy. Gói này là bộ công cụ cơ sở dữ liệu và trình ánh xạ quan hệ đối tượng [ORM]. Đây là cách chúng tôi nhập có thể nhập các gói này
cú pháp
{ "date": "2021-07-17", "firstname": "Hamza", "lastname": "Sher", "city": "Kyoto", "array": [ "Carmela", "Ashlee", "Alisha" ], "array of objects": [ { "index": 0, "index start at 5": 5 }, { "index": 1, "index start at 5": 6 }, { "index": 2, "index start at 5": 7 } ] }5
Ở đây create_engine là một phương thức giúp chúng ta kết nối với cơ sở dữ liệu SQLite. Đoạn mã sau minh họa chức năng này
Mã số
{ "date": "2021-07-17", "firstname": "Hamza", "lastname": "Sher", "city": "Kyoto", "array": [ "Carmela", "Ashlee", "Alisha" ], "array of objects": [ { "index": 0, "index start at 5": 5 }, { "index": 1, "index start at 5": 6 }, { "index": 2, "index start at 5": 7 } ] }6
Khi chúng tôi chạy mã này, cơ sở dữ liệu có tên 'my_data. db' được tạo. Sau đó, dữ liệu được chèn vào cơ sở dữ liệu dưới tên bảng ‘Sample_Data’
Chúng tôi có thể xác nhận điều này bằng cách chạy các lệnh sau trong dấu nhắc lệnh hoặc thiết bị đầu cuối của chúng tôi
Mã số
{ "date": "2021-07-17", "firstname": "Hamza", "lastname": "Sher", "city": "Kyoto", "array": [ "Carmela", "Ashlee", "Alisha" ], "array of objects": [ { "index": 0, "index start at 5": 5 }, { "index": 1, "index start at 5": 6 }, { "index": 2, "index start at 5": 7 } ] }7
Tùy thuộc vào đối tượng JSON, bạn có thể thấy rằng bảng đã được tạo và dữ liệu đã được chèn vào
Tải JSON[] VS tải[]
Sự khác biệt giữa cả hai điều này là với phương thức load[], chúng tôi chuyển tệp JSON làm đối số và sau đó chúng tôi có thể lưu trữ nó trong một biến
Trong khi phương thức loading[] chúng ta chuyển một chuỗi JSON được định nghĩa là một biến Python và tuần tự hóa chuỗi đó thành một đối tượng JSON. Các mẫu mã sau hiển thị chức năng này
Mã số. [trọng tải[]]
import json jsonFile = open['jsonData.json'] data = json.load[jsonFile] print[data] jsonFile.close[]
đầu ra
Mã số. [tải[]]
import json jsonData = '{"Name": "Hamza", "ID":"12345"}' data = json.loads[jsonData] print[data]
đầu ra
Kết xuất JSON[] VS tải[]
json. tải [] và json. phương pháp dumps[] là đối lập. json. phương thức loading[] lấy một chuỗi và trả về một đối tượng JSON có thể được sử dụng thêm
Trong khi đó json. Phương thức dumps[] lấy một đối tượng JSON và trả về một chuỗi chứa tất cả dữ liệu
Các mẫu mã sau đây minh họa chức năng này
Mã số
import json jsonFile = open['jsonData.json'] data = json.load[jsonFile] print[data] jsonFile.close[]0
đầu ra
Tôi hy vọng bạn thích hướng dẫn. Hãy quay lại nhé
- Chia sẻ trên facebook
- Tweet trên Twitter
Mokhtar Ebrahim
Mokhtar là người sáng lập LikeGeek. com. Anh ấy làm quản trị viên hệ thống Linux từ năm 2010. Ông chịu trách nhiệm duy trì, bảo mật và khắc phục sự cố máy chủ Linux cho nhiều khách hàng trên khắp thế giới. Anh ấy thích viết các tập lệnh shell và Python để tự động hóa công việc của mình