Làm cách nào để chuyển đổi JSON thành danh sách trong Python?

JSON (Ký hiệu đối tượng JavaScript) là một định dạng văn bản nhẹ để lưu trữ dữ liệu có cấu trúc ở định dạng mà con người có thể đọc được. So với XML, dữ liệu JSON chiếm ít dung lượng hơn, dễ đọc hơn đối với con người và để máy tính xử lý. JSON thường được sử dụng để truyền thông tin qua mạng trong giao tiếp máy khách/máy chủ và máy chủ/máy chủ. Bản thân JSON không có phương thức hoặc chức năng nào; . Mặc dù JSON bắt nguồn từ JavaScript, nhưng hiện tại nó được sử dụng tích cực trong hầu hết các ngôn ngữ lập trình, bao gồm Python, Java, PHP, C++, C#, Go và hầu hết trong số chúng, như Python, đều có các mô-đun tích hợp để làm việc với dữ liệu JSON

Ví dụ JSON

{
    "Id": 78912,
    "Customer": "Jason Sweet",
    "Quantity": 1,
    "Price": 18.00
  }


Giải tuần tự hóa JSON là gì?

Deserialization là quá trình chuyển đổi (giải mã) dữ liệu JSON thành các kiểu dữ liệu phù hợp trong ngôn ngữ lập trình Python. Bộ giải mã JSON chuyển đổi dữ liệu JSON thành từ điển Python bằng các phương thức của mô-đun trình phân tích cú pháp JSON tương ứng để hoàn thành tác vụ này

Làm cách nào để làm việc với JSON trong Python?

Python có một mô-đun tích hợp có tên là json (Bộ mã hóa và giải mã JSON) giúp dễ dàng làm việc với dữ liệu JSON trong Python. Sử dụng mô-đun Bộ mã hóa và giải mã JSON, bạn có thể tuần tự hóa (kết xuất) các đối tượng Python thành các chuỗi JSON hoặc giải tuần tự hóa (phân tích cú pháp) các chuỗi JSON thành các đối tượng Python. Bộ mã hóa JSON có thể tạo các chuỗi JSON đẹp hoặc nhỏ gọn hoặc chuyển đổi trực tiếp các đối tượng Python thành các tệp JSON. Bộ giải mã JSON có thể giải mã (hoặc phân tích cú pháp) các chuỗi JSON và tệp JSON thành các đối tượng Python. Bạn có thể mở rộng trình phân tích cú pháp JSON bằng bộ xử lý tùy chỉnh bằng cách chuyển bộ xử lý tới json. phương thức tải ()

Để làm việc với JSON trong Python, trước tiên bạn cần nhập mô-đun json, sau đó gọi json. loading() để phân tích chuỗi JSON thành đối tượng Python

Ví dụ về Parse JSON cơ bản

import json

json_str = '{"Id": 12345}'

data = json.loads(json_str)

print(data['Id'])

# output: 12345


Bộ giải mã JSON chuyển đổi chuỗi JSON thành đối tượng Python như thế nào?

Trình phân tích cú pháp JSON có thể giải tuần tự hóa cả chuỗi JSON và tệp JSON thành các đối tượng Python bằng bảng chuyển đổi bên dưới. json. phương thức load() chấp nhận tham số "object_hook" tùy chọn có thể được sử dụng để thực hiện quá trình giải tuần tự hóa tùy chỉnh của một số đối tượng JSON

JSONPythonobjectdictarraylist, tuplestringstrnumberint, floattrueTruefalseFalsenullNone

Làm cách nào để thực hiện quá trình giải tuần tự hóa tùy chỉnh khi phân tích chuỗi JSON thành các đối tượng Python?

Bạn có thể thực hiện quá trình khử lưu huỳnh tùy chỉnh bằng cách chuyển chức năng khử lưu huỳnh cho json. loading() với tham số "object_hook" tùy chọn. Hàm giải tuần tự hóa sẽ được gọi trên từng đối tượng JSON và kết quả của hàm sẽ được sử dụng để cung cấp loại Python tùy chỉnh thay vì từ điển

Chuyển đổi JSON sang Python với Chức năng giải tuần tự hóa tùy chỉnh

import json

class User(object):
    def __init__(self, id, name):
        self.id = id
        self.name = name

def user_decoder(obj):
    return User(obj['id'], obj['name'])

json_str = '{"id": 12345, "name": "John Smith"}'

user = json.loads(json_str, object_hook=user_decoder)

print(f"Id: {user.id}, Name: {user.name}") 

# output: Id: 12345, Name: John Smith


Các ngoại lệ liên quan đến trình phân tích cú pháp JSON của Python

Lớp JSONDecodeError là một lớp con của ValueError và đại diện cho các ngoại lệ khi giải mã các chuỗi JSON thành một đối tượng Python. Ngoại lệ của trình phân tích cú pháp cho biết có vấn đề với tính toàn vẹn của dữ liệu JSON của bạn. Ví dụ: dữ liệu JSON có thể có lỗi cú pháp (thiếu dấu ngoặc nhọn đóng) hoặc khóa không có giá trị (ví dụ:. {"Tên". })

Ví dụ ngoại lệ phân tích cú pháp JSON không hợp lệ

import json
from json.decoder import JSONDecodeError

json_str = '{"id": 12345, "name": }'

try:
    user = json.loads(json_str)

except JSONDecodeError as exp:
    print(exp.msg)

# output: Expecting value


json. cú pháp tải ()

json. phương thức loading() từ mô-đun Bộ mã hóa và giải mã JSON thực hiện chuyển đổi JSON sang Python. json. phương thức loading() lấy một chuỗi (và phương thức json được ghép nối. load() lấy một đối tượng tệp), phân tích cú pháp dữ liệu JSON, chuyển đổi nó thành các loại dữ liệu thích hợp trong Python, điền vào từ điển dữ liệu này và trả về nó. Việc chuyển đổi ngược từ đối tượng Python sang chuỗi JSON được thực hiện bởi json. phương thức dumps() từ cùng một thư viện

json. loading() Cú pháp phương thức

json.loads(s, *, cls=None, object_hook=None, parse_float=None, parse_int=None, parse_constant=None, object_pairs_hook=None, **kw)


Ở đâu
  • s. một chuỗi, byte hoặc mảng phụ chứa tài liệu JSON
  • object_hook (tùy chọn). một chức năng được gọi bởi bộ giải mã trong khi xử lý JSON. Cho phép bạn lấy các đối tượng Python tùy chỉnh thay vì dict
  • cls (tùy chọn). một lớp chứa triển khai phân tích cú pháp JSON tùy chỉnh sẽ được sử dụng thay cho Bộ giải mã JSON tiêu chuẩn
  • parse_float (tùy chọn). một chuỗi tùy chỉnh để thả chức năng chuyển đổi
  • parse_int (tùy chọn). một chuỗi tùy chỉnh thành chức năng chuyển đổi int
  • parse_constant (tùy chọn). một hàm có thể được sử dụng để đưa ra một ngoại lệ khi gặp phải các số không hợp lệ trong JSON
  • object_pairs_hook (tùy chọn). một hàm sẽ được gọi để giải mã danh sách các cặp được sắp xếp theo thứ tự và trả về các đối tượng Python thay vì một lệnh. Hàm object_pairs_hook có mức độ ưu tiên cao hơn hàm object_hook

json. loading() Ví dụ sử dụng

import json

json_str = '{"id": 12345, "person":  {"name":  "John Smith"}}'
        
data = json.loads(json_str)

print(f'Name: {data["person"]["name"]}')

# output: Name: John Smith


Làm cách nào để phân tích cú pháp tệp JSON thành đối tượng Python?

Để chuyển đổi tệp JSON thành đối tượng Python bằng Bộ giải mã JSON, bạn có thể sử dụng json. phương thức load() (không có chữ "s"), có cú pháp tương tự như json. loading() nhưng chấp nhận một đối tượng tệp thay vì một chuỗi

Phân tích tệp JSON thành ví dụ đối tượng Python

import json

with open('data.json') as file_object:
    data = json.load(file_object)

print(data)


Làm cách nào để truy cập các phần tử mảng JSON trong lệnh Python?

Bộ giải mã JSON chuyển đổi một mảng JSON thành kiểu dữ liệu danh sách Python. Bạn có thể truy cập một phần tử từ một mảng JSON theo chỉ mục của nó trong một đối tượng Python

Phân tích ví dụ về mảng JSON

import json

json_str =  """
{
  "Orders": [
    {"Id": 78912},
    {"Id": 88953}
  ]
}
"""''
data = json.loads(json_str)
      
order_1_id = data['Orders'][0]['Id']
order_2_id = data['Orders'][1]['Id']
total = len(data['Orders'])
      
print(f"Order #1: {order_1_id}, Order #2: {order_2_id}, Total Orders: {total}")

# output: Order #1: 78912, Order #2: 88953, Total Orders: 2


Làm cách nào để phân tích dữ liệu JSON từ một URL sang đối tượng Python?

Đầu tiên, cài đặt Thư viện yêu cầu Python

Cài đặt thư viện yêu cầu Python

________số 8_______


Sau đó sử dụng các yêu cầu. phương thức get() để tải dữ liệu JSON từ URL đích xuống chuỗi Python. Sau này, bạn có thể sử dụng json. loading() để chuyển đổi chuỗi JSON kết quả thành đối tượng Python

Python Phân tích cú pháp dữ liệu JSON từ URL

import json 
import requests 
      
json_str = requests.get("https://reqbin.com/echo/get/json")
      
data = json.loads(json_str.text)
           
print(data)

# output: {'success': 'true'}


Trình phân tích cú pháp JSON xử lý các khóa trùng lặp trong JSON như thế nào?

RFC 8259 yêu cầu tên khóa PHẢI là duy nhất trong JSON, nhưng điều này không bắt buộc. Thư viện trình phân tích cú pháp JSON JSON của Python không đưa ra các ngoại lệ khóa trùng lặp. Nó bỏ qua các cặp khóa-giá trị trùng lặp và lấy cặp khóa-giá trị cuối cùng

Phân tích các khóa trùng lặp trong chuỗi JSON

import json

json_str = '{"Id": 12345}'

data = json.loads(json_str)

print(data['Id'])

# output: 12345
0


sự khác biệt giữa json là gì. tải () và json. bãi ()?

json. phương thức dumps() ngược lại với json. tải (). Nó nhận một đối tượng Python và trả về một chuỗi JSON. json. Phương thức dumps() có thể tạo JSON đẹp hoặc nhỏ gọn tùy thuộc vào các tham số được truyền

Chuyển đổi đối tượng Python thành ví dụ về chuỗi JSON

import json

json_str = '{"Id": 12345}'

data = json.loads(json_str)

print(data['Id'])

# output: 12345
1


Kết quả chuyển đổi từ Python sang JSON

Biểu diễn JSON của đối tượng Python

import json

json_str = '{"Id": 12345}'

data = json.loads(json_str)

print(data['Id'])

# output: 12345
2


Xem thêm

  • Làm cách nào để thêm nhận xét vào JSON?
  • Làm cách nào để tách chuỗi trong Python?
  • Làm cách nào để đảo ngược chuỗi trong Python?
  • Làm cách nào để chuyển đổi một đối tượng thành JSON trong Python?
  • Làm cách nào để so sánh các chuỗi trong Python?
  • Làm cách nào tôi có thể kết xuất đối tượng Python thành chuỗi JSON bằng json. bãi ()?
  • Làm cách nào để lấy độ dài của danh sách trong Python?

Các ví dụ và bài viết về API liên quan đến Python Parse JSON

Làm cách nào để đăng JSON bằng Thư viện yêu cầu Python? . bãi ()?

Làm cách nào để chuyển đổi dữ liệu JSON thành danh sách?

Chúng ta có thể chuyển đổi một mảng JSON thành một danh sách bằng cách sử dụng lớp ObjectMapper . Nó có một phương thức hữu ích readValue() lấy một chuỗi JSON và chuyển đổi nó thành lớp đối tượng được chỉ định trong đối số thứ hai.

Làm cách nào để chuyển đổi dữ liệu JSON thành dữ liệu Python?

Để chuyển đổi JSON thành loại Python tùy chỉnh, chúng ta cần làm theo những điều sau. Như chúng ta đã biết json. tải () và json. loading() chuyển đổi JSON thành một đối tượng dict, vì vậy chúng ta cần phải tạo một hàm tùy chỉnh để chúng ta có thể chuyển đổi dict thành một loại Python tùy chỉnh .

Làm cách nào để đọc tệp JSON dưới dạng danh sách trong Python?

Làm cách nào để mở và đọc tệp JSON bằng Python? .
Mở tệp json bằng hàm open()
sử dụng json. load() và truyền đối tượng tệp
Tiến hành bằng cách sử dụng kết quả của json. load() như một từ điển python bình thường và in nội dung

Làm cách nào để chuyển đổi tệp JSON thành mảng trong Python?

json. loads(array) chuyển đổi mảng JSON thành đối tượng Python i. e. danh sách (ở đây) và giá trị được lưu trữ trong biến dữ liệu. Sau đó, bằng cách sử dụng câu lệnh in, chúng tôi đã in ra danh sách Python. Lưu ý rằng, dữ liệu sẽ là một lệnh và dữ liệu ['Công nghệ'] sẽ là một danh sách.