Hướng dẫn how do i read nested json data in python? - làm cách nào để đọc dữ liệu json lồng nhau trong python?

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.

Show

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.

  1. Trước khi chúng tôi bắt đầu, nếu bạn muốn theo dõi các ví dụ:
  2. Đi đến liên kết này.
  3. 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 json

with open('superheroes.json') as f:
superHeroSquad = json.load(f)

type(superHeroSquad)
# Output: dict
superHeroSquad.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ức
df1 = pd.read_json(‘https://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(‘https://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ụ:

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.

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.
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ụ:

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(‘https://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)
5

Pretty-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.

Làm cách nào để đọc một tệp JSON lồng nhau trong Python?

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 PD. read_json () để tải jsons đơn giản và pd.json_normalize () để tải jsons lồng nhau.pd. json_normalize() to load nested JSONs.

Làm cách nào để truy cập một đối tượng lồng nhau trong JSON?

Truy cập các đối tượng JSON lồng nhau giống như truy cập các mảng lồng nhau.Các đối tượng lồng nhau là các đối tượng bên trong một đối tượng khác.Trong ví dụ sau, 'phương tiện' là một đối tượng bên trong một đối tượng chính gọi là 'người'.Sử dụng ký hiệu DOT, thuộc tính của các đối tượng lồng nhau (CAR) được truy cập.Using dot notation the nested objects' property(car) is accessed.

Làm cách nào để đọc nhiều đối tượng JSON trong Python?

Để tải và phân tích tệp JSON với nhiều đối tượng JSON, chúng ta cần tuân theo các bước dưới đây:..
Tạo một danh sách trống có tên JsonList ..
Đọc từng dòng tệp vì mỗi dòng chứa JSON hợp lệ.....
Chuyển đổi từng đối tượng JSON thành Python dict bằng cách sử dụng JSON.....
Lưu từ điển này vào một danh sách có tên là result jsonlist ..

Làm cách nào để xử lý JSON lồng nhau?

Một jsonarray có thể phân tích văn bản từ một chuỗi để tạo ra một đối tượng giống như vector.Chúng ta có thể phân tích một đối tượng JSON lồng nhau bằng phương pháp getString (index) của jsonarray.Đây là một phương pháp tiện lợi cho getjsonstring (index).phương thức getString () và nó trả về một giá trị chuỗi tại vị trí được chỉ định.using the getString(index) method of JSONArray. This is a convenience method for the getJSONString(index). getString() method and it returns a string value at the specified position.