Trong bài viết này, bạn sẽ học cách đọc, phân tích và viết các tệp JSON bằng Python. Tôi sẽ nói về cách xử lý tốt nhất các tệp JSON đơn giản cũng như các tệp JSON lồng nhau. Ngoài ra, tôi sẽ thảo luận về cách truy cập các giá trị cụ thể trong dữ liệu.
JSON là gì?
JSON [ký hiệu đối tượng script Java] là một định dạng tệp phổ biến để lưu trữ và truyền dữ liệu trong các ứng dụng web. Rất có khả năng bạn sẽ gặp các tệp JSON nếu bạn làm việc với dữ liệu, vì vậy bạn chắc chắn muốn tìm hiểu cách đọc và viết cho JSON.
Dưới đây là một ví dụ về cấu trúc của tệp JSON có thể trông như thế nào.
Hình ảnh của tác giảCấu trúc JSON trông rất giống với từ điển Python. Lưu ý rằng JSON ở định dạng của các cặp
import pandas as pddf = pd.read_json[‘superheroes.json’]2, trong đó khóa là chuỗi và giá trị có thể là một chuỗi, số, boolean, mảng, đối tượng hoặc null. Để giúp bạn hình dung điều đó, tôi đã nhấn mạnh tất cả các phím màu xanh lam và tất cả các giá trị trong màu cam trong hình ảnh dưới đây. Lưu ý rằng mỗi khóa/giá trị cũng được phân tách bằng dấu phẩy. Đi trước và kiểm tra hình ảnh dưới đây để làm quen với định dạng. Chúng tôi sẽ thảo luận về cấu trúc lồng nhau của khóa ‘thành viên sau này trong bài viết này.key is a string and value can be a string, number, boolean, array, object, or null. To help you visualize that, I’ve highlighted all keys in blue and all values in orange in the image below. Notice that each key/value is also separated by a comma. Go ahead and examine the image below to familiarize yourself with the format. We will discuss the nested structure of the ‘members’ key later on in this article.Hình ảnh của tác giả
Cấu trúc JSON trông rất giống với từ điển Python. Lưu ý rằng JSON ở định dạng của các cặp import pandas as pddf = pd.read_json[‘superheroes.json’]
2, trong đó khóa là chuỗi và giá trị có thể là một chuỗi, số, boolean, mảng, đối tượng hoặc null. Để giúp bạn hình dung điều đó, tôi đã nhấn mạnh tất cả các phím màu xanh lam và tất cả các giá trị trong màu cam trong hình ảnh dưới đây. Lưu ý rằng mỗi khóa/giá trị cũng được phân tách bằng dấu phẩy. Đi trước và kiểm tra hình ảnh dưới đây để làm quen với định dạng. Chúng tôi sẽ thảo luận về cấu trúc lồng nhau của khóa ‘thành viên sau này trong bài viết này.
Nhập JSON vào Python
Python thuận tiện đã xây dựng các chức năng để giúp đọc các tệp JSON. Dưới đây là một số ví dụ về cách phân tích các tệp JSON vào một đối tượng Python.
- Trước khi chúng tôi bắt đầu, nếu bạn muốn theo dõi các ví dụ:
- Đi đến liên kết này.
- Nhấp chuột phải vào trang và chọn Lưu dưới dạng.
Lưu tệp dưới dạng tệp JSON có tên các siêu anh hùng.
Ví dụ 1: Tải JSON vào Từ điển Python
import jsonwith open['superheroes.json'] as f:
type[superHeroSquad]
superHeroSquad = json.load[f]
# Output: dictsuperHeroSquad.keys[]
# Output: dict_keys[['squadName', 'homeTown', 'formed', 'secretBase', 'active', 'members']]
Bắt đầu bằng cách nhập thư viện
import pandas as pddf = pd.read_json[‘superheroes.json’]3. Chúng tôi sử dụng chức năng
import pandas as pddf = pd.read_json[‘superheroes.json’]4 để đọc tệp JSON và sau đó là phương thức
import pandas as pddf = pd.read_json[‘superheroes.json’]5 để phân tích chuỗi JSON thành một từ điển Python gọi là Superherosquad. Đó là nó! Bây giờ bạn có một từ điển Python từ tệp JSON của bạn. Khá đơn giản.
Một điều cần lưu ý là thư viện import pandas as pddf = pd.read_json[‘superheroes.json’]
3 có cả import pandas as pddf = pd.read_json[‘superheroes.json’]
7 và import pandas as pddf = pd.read_json[‘superheroes.json’]
8. Cả hai đều làm điều tương tự, nhưng import pandas as pddf = pd.read_json[‘superheroes.json’]
8 là tạo một đối tượng Python từ chuỗi JSON trong khi import pandas as pddf = pd.read_json[‘superheroes.json’]
7 là tạo một đối tượng Python từ tệp JSON. Bạn có thể nghĩ về thêm ’s trong import pandas as pddf = pd.read_json[‘superheroes.json’]
8 như tải trọng cho các chuỗi.
Ví dụ 2: Tải JSON vào Pandas DataFrame
Sử dụng phương thứcdf1 = pd.read_json[‘//mdn.github.io/learning-area/javascript/oojs/json/superheroes.json']
2 nếu bạn muốn chuyển đổi tệp JSON thành một khung dữ liệu gấu trúc.import pandas as pddf = pd.read_json[‘superheroes.json’]Image bởi tác giả
df1 = pd.read_json[‘//mdn.github.io/learning-area/javascript/oojs/json/superheroes.json']
Lưu ý rằng bạn không giới hạn trong việc đọc các tệp JSON từ máy tính của bạn. Bạn cũng có thể chuyển đường dẫn URL đến chức năng. Điều này sẽ giúp bạn tiết kiệm bước phải tải xuống tệp JSON.
Ví dụ 3: Đang tải JSON lồng nhau vào gấu trúc
Bạn có thể sẽ gặp các tệp JSON được lồng. Điều đó thường gây khó khăn cho việc làm việc trong gấu trúc. Nested Json tương tự như ý tưởng về từ điển lồng nhau trong Python, nghĩa là một từ điển trong một từ điển.
Hình ảnh của tác giảCấu trúc JSON trông rất giống với từ điển Python. Lưu ý rằng JSON ở định dạng của các cặp
import pandas as pddf = pd.read_json[‘superheroes.json’]2, trong đó khóa là chuỗi và giá trị có thể là một chuỗi, số, boolean, mảng, đối tượng hoặc null. Để giúp bạn hình dung điều đó, tôi đã nhấn mạnh tất cả các phím màu xanh lam và tất cả các giá trị trong màu cam trong hình ảnh dưới đây. Lưu ý rằng mỗi khóa/giá trị cũng được phân tách bằng dấu phẩy. Đi trước và kiểm tra hình ảnh dưới đây để làm quen với định dạng. Chúng tôi sẽ thảo luận về cấu trúc lồng nhau của khóa ‘thành viên sau này trong bài viết này.Hình ảnh của tác giả
Cấu trúc JSON trông rất giống với từ điển Python. Lưu ý rằng JSON ở định dạng của các cặp
import pandas as pddf = pd.read_json[‘superheroes.json’]2, trong đó khóa là chuỗi và giá trị có thể là một chuỗi, số, boolean, mảng, đối tượng hoặc null. Để giúp bạn hình dung điều đó, tôi đã nhấn mạnh tất cả các phím màu xanh lam và tất cả các giá trị trong màu cam trong hình ảnh dưới đây. Lưu ý rằng mỗi khóa/giá trị cũng được phân tách bằng dấu phẩy. Đi trước và kiểm tra hình ảnh dưới đây để làm quen với định dạng. Chúng tôi sẽ thảo luận về cấu trúc lồng nhau của khóa ‘thành viên sau này trong bài viết này.
Nhập JSON vào Python
Python thuận tiện đã xây dựng các chức năng để giúp đọc các tệp JSON. Dưới đây là một số ví dụ về cách phân tích các tệp JSON vào một đối tượng Python.
df[‘members’].apply[pd.Series]
Trước khi chúng tôi bắt đầu, nếu bạn muốn theo dõi các ví dụ:
Cấu trúc JSON trông rất giống với từ điển Python. Lưu ý rằng JSON ở định dạng của các cặp
import pandas as pddf = pd.read_json[‘superheroes.json’]2, trong đó khóa là chuỗi và giá trị có thể là một chuỗi, số, boolean, mảng, đối tượng hoặc null. Để giúp bạn hình dung điều đó, tôi đã nhấn mạnh tất cả các phím màu xanh lam và tất cả các giá trị trong màu cam trong hình ảnh dưới đây. Lưu ý rằng mỗi khóa/giá trị cũng được phân tách bằng dấu phẩy. Đi trước và kiểm tra hình ảnh dưới đây để làm quen với định dạng. Chúng tôi sẽ thảo luận về cấu trúc lồng nhau của khóa ‘thành viên sau này trong bài viết này.
df = pd.concat[[df[‘members’].apply[pd.Series], df.drop[‘members’, axis = 1]], axis = 1]
Nhập JSON vào Python
Python thuận tiện đã xây dựng các chức năng để giúp đọc các tệp JSON. Dưới đây là một số ví dụ về cách phân tích các tệp JSON vào một đối tượng Python.
pd.json_normalize[superHeroSquad, record_path = [‘members’], meta = [‘squadName’, ‘homeTown’, ‘formed’, ‘secretBase’, ‘active’]]
- Trước khi chúng tôi bắt đầu, nếu bạn muốn theo dõi các ví dụ:
- Đi đến liên kết này.
- Nhấp chuột phải vào trang và chọn Lưu dưới dạng.
- Cấu trúc JSON trông rất giống với từ điển Python. Lưu ý rằng JSON ở định dạng của các cặp
import pandas as pddf = pd.read_json[‘superheroes.json’]
2, trong đó khóa là chuỗi và giá trị có thể là một chuỗi, số, boolean, mảng, đối tượng hoặc null. Để giúp bạn hình dung điều đó, tôi đã nhấn mạnh tất cả các phím màu xanh lam và tất cả các giá trị trong màu cam trong hình ảnh dưới đây. Lưu ý rằng mỗi khóa/giá trị cũng được phân tách bằng dấu phẩy. Đi trước và kiểm tra hình ảnh dưới đây để làm quen với định dạng. Chúng tôi sẽ thảo luận về cấu trúc lồng nhau của khóa ‘thành viên sau này trong bài viết này.
Python thuận tiện đã xây dựng các chức năng để giúp đọc các tệp JSON. Dưới đây là một số ví dụ về cách phân tích các tệp JSON vào một đối tượng Python.
Trước khi chúng tôi bắt đầu, nếu bạn muốn theo dõi các ví dụ:
Hình ảnh của tác giảĐể truy cập giá trị đó, chúng ta có thể sử dụng mã sau.
superHeroSquad[‘members’][1][‘secretIdentity’]
Bắt đầu từ đỉnh của hệ thống phân cấp và làm việc theo cách của chúng tôi, khóa đầu tiên mà chúng tôi cần là ‘thành viên, vì đó là nút cha mà giá trị của chúng tôi cư trú.
Hình ảnh của tác giảBên trong khóa ‘Thành viên, chúng tôi đang tìm kiếm Madame Uppercut, đây là siêu anh hùng thứ hai trong danh sách. Hãy nhớ rằng chỉ mục cho các mục đầu tiên luôn bắt đầu ở 0, vì vậy chúng tôi muốn sử dụng 1 để truy cập siêu anh hùng thứ hai.
Cuối cùng, chúng tôi quan tâm đến chính ‘bí mật.
Hình ảnh của tác giảKết hợp tất cả những điều đó cùng nhau cung cấp cho chúng ta dòng mã này bên dưới, trong đó trả về giá trị của Jane Jane Wilson.
superHeroSquad[‘members’][1][‘secretIdentity’]
Bạn có thể nhận thấy rằng tôi đã làm nổi bật hai giá trị màu xanh lam trong đoạn trích JSON ở trên. Hãy tiếp tục và thử truy cập các giá trị đó như các bài tập riêng lẻ. Hãy chia sẻ mã của bạn trong các ý kiến dưới đây.
Xuất từ Python sang JSON
Hãy để một bản chỉnh sửa nhanh chóng cho danh tính bí mật bị mất của siêu anh hùng cuối cùng của chúng tôi, Ngọn lửa vĩnh cửu, từ không rõ ràng với đến với Will Will Smith và sau đó xuất từ Từ điển Siêu anh hùng của chúng tôi trở lại tệp JSON. Chúng tôi sử dụng phương thức
df1 = pd.read_json[‘//mdn.github.io/learning-area/javascript/oojs/json/superheroes.json']
8 để ghi vào tệp.#update secret identity of Eternal Flame
superHeroSquad[‘members’][2][‘secretIdentity’] = 'Will Smith'with open['superheroes.json', 'w'] as file:
json.dump[superHeroSquad, file]
Nếu bạn mở tệp Superheroes.json của mình, bây giờ nó sẽ có Smith là danh tính bí mật của ngọn lửa vĩnh cửu. Tương tự như
import pandas as pddf = pd.read_json[‘superheroes.json’]7 và
import pandas as pddf = pd.read_json[‘superheroes.json’]8 đã đề cập trước đây, thư viện
import pandas as pddf = pd.read_json[‘superheroes.json’]3 cũng có
df[‘members’].apply[pd.Series]
2 và df[‘members’].apply[pd.Series]
3. Một để lưu trữ dưới dạng tệp JSON và một để lưu trữ dưới dạng chuỗi JSON tương ứng.Ngoài ra, nếu bạn đang làm việc với Pandas DataFrame và muốn xuất sang JSON, bạn có thể sử dụng phương thức
df[‘members’].apply[pd.Series]
4.df[‘members’].apply[pd.Series]
5Pretty-Printing
Bạn có thể nhận thấy rằng tệp JSON trông không đẹp lắm trong tệp đầu ra của bạn. Nó hiển thị như một chuỗi duy nhất như dưới đây.
Hình ảnh của tác giảĐể làm cho nó trông đẹp hơn, bạn có thể sử dụng tham số
df[‘members’].apply[pd.Series]
6 trong phương thức df[‘members’].apply[pd.Series]
7 của bạn.import pandas as pddf = pd.read_json[‘superheroes.json’]0
Đầu ra sẽ trông giống như hình ảnh bên dưới, dễ đọc hơn nhiều.
Hình ảnh của tác giảSắp xếp
Nếu được yêu cầu, bạn cũng có thể vượt qua tham số
df[‘members’].apply[pd.Series]
8, được đặt thành df[‘members’].apply[pd.Series]
9 để sắp xếp các khóa của bạn. Lưu ý rằng tất cả các khóa bao gồm các khóa lồng nhau đều được sắp xếp.import pandas as pddf = pd.read_json[‘superheroes.json’]1Image bởi tác giả
Tóm tắt
- Cấu trúc dữ liệu JSON ở định dạng của các cặp
import pandas as pddf = pd.read_json[‘superheroes.json’]
2, trong đó khóa là chuỗi và giá trị có thể là một chuỗi, số, boolean, mảng, đối tượng hoặc null.key is a string and value can be a string, number, boolean, array, object, or null. - Python đã tích hợp các chức năng dễ dàng nhập các tệp JSON dưới dạng từ điển Python hoặc DataFrame của Pandas.
- Sử dụng
df = pd.concat[[df[‘members’].apply[pd.Series], df.drop[‘members’, axis = 1]], axis = 1]
1 để tải Jsons đơn giản vàdf = pd.concat[[df[‘members’].apply[pd.Series], df.drop[‘members’, axis = 1]], axis = 1]
2 để tải jsons lồng nhau. - Bạn có thể dễ dàng truy cập các giá trị trong tệp JSON của mình bằng cách củng cố các tên và/hoặc chỉ số khóa.
- Các đối tượng Python có thể được xuất trở lại JSON với in và sắp xếp khá.
Cảm ơn bạn đã đọc. Hãy cho tôi biết trong các ý kiến nếu bạn có những lời khuyên khác để làm việc với JSON trong Python.