JSON được các nhà phát triển yêu thích để tuần tự hóa dữ liệu. Nó được sử dụng trong hầu hết các API công khai trên web và đó là một cách tuyệt vời để truyền dữ liệu giữa các chương trình. Có thể phân tích cú pháp JSON trực tiếp từ lệnh Linux, tuy nhiên, Python cũng không gặp vấn đề gì khi đọc JSON
Trong hướng dẫn này, bạn sẽ học
- Cách phân tích cú pháp JSON đơn giản trong Python
- Làm thế nào để phân tích cú pháp cho một đối tượng
- Cách sử dụng Python để phân tích tệp JSON
json_data = '{"a": 1, "b": 2, "c": 3, "d": 4, "e": 5}'8. Conventions# – yêu cầu các lệnh linux đã cho phải được thực thi với quyền root trực tiếp với tư cách là người dùng root hoặc bằng cách sử dụng lệnh
json_data = '{"a": 1, "b": 2, "c": 3, "d": 4, "e": 5}'8
$ – yêu cầu các lệnh linux đã cho phải được thực thi như một người dùng không có đặc quyền thông thường
Thiết lập
Trước khi bạn có thể bắt đầu phân tích cú pháp JSON bằng Python, bạn sẽ cần một số JSON để làm việc với. Có một vài điều mà bạn sẽ cần phải thiết lập trước. Đầu tiên, tạo một tệp Python chứa mã của bạn cho các bài tập này
Bên trong tệp, nhập mô-đun JSON
import json
Sau đó, tạo một số JSON cơ bản. Nó chia sẻ cú pháp gần như giống hệt với một từ điển, vì vậy hãy tạo một từ điển và Python có thể sử dụng nó dưới dạng JSON
json_data = '{"a": 1, "b": 2, "c": 3, "d": 4, "e": 5}'
Thứ tiếp theo mà bạn cần là một tệp JSON. Nếu bạn chưa biết, chúng là các tệp văn bản có phần mở rộng
json_data = '{"a": 1, "b": 2, "c": 3, "d": 4, "e": 5}'0. Sử dụng trình soạn thảo văn bản bạn chọn để tạo một cái và đặt tên cho nó là
json_data = '{"a": 1, "b": 2, "c": 3, "d": 4, "e": 5}'0. Đặt JSON bên dưới vào tệp
[
{
"Name": "Debian",
"Version": "9",
"Install": "apt",
"Owner": "SPI",
"Kernel": "4.9"
},
{
"Name": "Ubuntu",
"Version": "17.10",
"Install": "apt",
"Owner": "Canonical",
"Kernel": "4.13"
},
{
"Name": "Fedora",
"Version": "26",
"Install": "dnf",
"Owner": "Red Hat",
"Kernel": "4.13"
},
{
"Name": "CentOS",
"Version": "7",
"Install": "yum",
"Owner": "Red Hat",
"Kernel": "3.10"
},
{
"Name": "OpenSUSE",
"Version": "42.3",
"Install": "zypper",
"Owner": "Novell",
"Kernel": "4.4"
},
{
"Name": "Arch Linux",
"Version": "Rolling Release",
"Install": "pacman",
"Owner": "SPI",
"Kernel": "4.13"
},
{
"Name": "Gentoo",
"Version": "Rolling Release",
"Install": "emerge",
"Owner": "Gentoo Foundation",
"Kernel": "4.12"
}
]
Phân tích cú pháp JSON đơn giản bằng Python
Mọi thứ đã sẵn sàng. Quay lại dòng JSON đơn giản mà bạn đã tạo trước đó. Đó là những gì bạn sẽ làm việc đầu tiên
Python sử dụng phương thức
json_data = '{"a": 1, "b": 2, "c": 3, "d": 4, "e": 5}'1 từ
json_data = '{"a": 1, "b": 2, "c": 3, "d": 4, "e": 5}'2 để tải JSON từ một chuỗi. Bạn có nhận thấy các trích dẫn xung quanh từ điển mà bạn đã tạo cho JSON không? . Bạn không thực sự cần phải lo lắng về nó quá nhiều. Chỉ cần biết rằng biểu mẫu này xử lý dữ liệu trong khi
json_data = '{"a": 1, "b": 2, "c": 3, "d": 4, "e": 5}'3 xử lý tệp. Thử tải và in dữ liệu JSON
parsed_json = [json.loads[json_data]] print[json.dumps[parsed_json, indent=4, sort_keys=True]]
Nó sẽ không khác nhiều, nhưng Python thấy nó ở dạng có thể sử dụng được ngay bây giờ. Bạn có thể lưu nó vào một biến và lặp lại nó để xem
________số 8Như bạn có thể thấy,
json_data = '{"a": 1, "b": 2, "c": 3, "d": 4, "e": 5}'4 chứa một từ điển, không phải một chuỗi giống như một
Phân tích cú pháp JSON bằng Python thành một đối tượng
Tiếp theo, hãy xem phân tích cú pháp JSON trong Python thành một đối tượng. JSON thực sự là một đối tượng trong JavaScript, do đó, sẽ rất hợp lý nếu muốn nhập nó dưới dạng một đối tượng trong Python. Có một số cách để làm điều này, nhưng hầu hết đều liên quan đến việc tạo một lớp mà bạn khởi tạo bằng cách điền dữ liệu từ JSON vào lớp đó. Thực sự không có chuyển đổi trực tiếp
Có một cách khá trực tiếp để làm điều đó bằng cách tải JSON vào thuộc tính
json_data = '{"a": 1, "b": 2, "c": 3, "d": 4, "e": 5}'5 của đối tượng
json_data = '{"a": 1, "b": 2, "c": 3, "d": 4, "e": 5}'1
Phân tích tệp JSON bằng Python
Bạn thực sự sẽ không cần phân tích cú pháp JSON từ bên trong chương trình Python. Điều đó không có nhiều ý nghĩa trong thực tế. Tuy nhiên, bạn sẽ cần đọc và phân tích nó từ các tệp và đó là lý do tại sao bạn thiết lập tệp
json_data = '{"a": 1, "b": 2, "c": 3, "d": 4, "e": 5}'0 đó
Một
json_data = '{"a": 1, "b": 2, "c": 3, "d": 4, "e": 5}'7 có thể đơn giản hóa quá trình đọc và đóng tệp, vì vậy đó là cấu trúc được sử dụng ở đây. Một điều khác cần lưu ý là phương pháp
json_data = '{"a": 1, "b": 2, "c": 3, "d": 4, "e": 5}'3 thay thế
json_data = '{"a": 1, "b": 2, "c": 3, "d": 4, "e": 5}'1 vì đây là tệp. Mặt khác, quá trình này hầu như giống nhau
json_data = '{"a": 1, "b": 2, "c": 3, "d": 4, "e": 5}'6
Bớt tư tưởng
Thực sự không khó để phân tích cú pháp JSON trong Python. Bằng cách sử dụng phương pháp
[
{
"Name": "Debian",
"Version": "9",
"Install": "apt",
"Owner": "SPI",
"Kernel": "4.9"
},
{
"Name": "Ubuntu",
"Version": "17.10",
"Install": "apt",
"Owner": "Canonical",
"Kernel": "4.13"
},
{
"Name": "Fedora",
"Version": "26",
"Install": "dnf",
"Owner": "Red Hat",
"Kernel": "4.13"
},
{
"Name": "CentOS",
"Version": "7",
"Install": "yum",
"Owner": "Red Hat",
"Kernel": "3.10"
},
{
"Name": "OpenSUSE",
"Version": "42.3",
"Install": "zypper",
"Owner": "Novell",
"Kernel": "4.4"
},
{
"Name": "Arch Linux",
"Version": "Rolling Release",
"Install": "pacman",
"Owner": "SPI",
"Kernel": "4.13"
},
{
"Name": "Gentoo",
"Version": "Rolling Release",
"Install": "emerge",
"Owner": "Gentoo Foundation",
"Kernel": "4.12"
}
]
0, bạn có thể chuyển đổi JSON thành từ điển. Từ điển đó có thể được sử dụng làm từ điển hoặc có thể được nhập vào một đối tượng khi nó được khởi tạo để truyền dữ liệu vào một đối tượng mới