Cách phân tích cú pháp JSON trong Python

Tự hỏi làm thế nào để phân tích cú pháp JSON trong Python? Bạn không đơn độc. Hướng dẫn này làm cho việc đọc, viết và phân tích cú pháp một đoạn mã, sai lầm - bánh.

Trong hướng dẫn nhanh này, chúng ta đi qua những điều cơ bản về phân tích cú pháp trong python, giải thích JSON là gì và cách sử dụng cả hai để có được dữ liệu bạn cần.

Phân tích cú pháp là gì?

Phân tích cú pháp là quá trình chuyển đổi một chuỗi các ký tự thành một cây cú pháp trừu tượng. Trình phân tích cú pháp sau đó sử dụng cây này để thực hiện các thao tác khác nhau trên đầu vào, chẳng hạn như kiểm tra tính đúng cú pháp hoặc xác định xem có bất kỳ lỗi nào trong đầu vào hay không.

Phân tích cú pháp Json từ đầu trong Haskell | Abhinavsarkar.net

Loại trình phân tích cú pháp phổ biến nhất được gọi là lexer, chuyển đổi chuỗi ký tự thành mã thông báo (hoặc "lexemes"). Mã thông báo có thể là bất cứ thứ gì có ý nghĩa đối với ngôn ngữ của bạn: nó có thể là một định danh, một chuỗi theo nghĩa đen như "xin chào" hoặc thậm chí một cái gì đó phức tạp hơn như một cuộc gọi hàm. 

Sau khi bạn đã chuyển đổi tất cả các lexemes thành token, bạn cần quyết định điều gì sẽ xảy ra với chúng khi chương trình của bạn xử lý chúng. Quyết định này phụ thuộc vào cách ngôn ngữ của bạn hoạt động. Một số ngôn ngữ không có khái niệm về chức năng; những người khác có thể sử dụng đệ quy và hàm bậc cao; những người khác có thể sử dụng đóng cửa hoặc không gian tên ẩn danh, v.v. 

Bạn cũng sẽ muốn đảm bảo rằng mỗi mã thông báo không chứa nhiều hơn một ký tự để bạn không vô tình tạo các vòng lặp vô hạn trong quá trình phân tích cú pháp.

JSON là gì?

JavaScript Object Notation is a lightweight data-interchange format that describes objects – via attribute/value pairs – for data storage or transport. For example, let’s say you have a glossary on your website. JSON uses a string to define it. “title” : “example glossary”

Các loại tệp JSON chính là gì?

Có hai loại tệp JSON chính: object và Array. Đối tượng là một cách đơn giản để lưu trữ bất kỳ loại dữ liệu nào, trong khi Array được sử dụng để lưu trữ các đối tượng có chứa các đối tượng khác. 

Lợi ích của việc sử dụng JSON là gì?

Lợi ích chính của việc sử dụng JSON qua XML hoặc các định dạng khác như CSV hoặc HTML là bạn không phải lo lắng về bất kỳ mã phân tích cú pháp đặc biệt nào trong ứng dụng của mình. Khi sử dụng JSON, bạn phải bao gồm tệp chứa dữ liệu của bạn ở đúng vị trí trên trang của bạn, sau đó đọc từ đó. Điều này có nghĩa là bất kể ai đó sử dụng loại thiết bị nào để xem trang web của bạn - họ luôn nhận được chính xác những gì bạn định nhận.  

Python là gì?

Python là một ngôn ngữ lập trình có mục đích chung mà bạn có thể sử dụng cho nhiều loại dự án khác nhau. Thật dễ dàng để tìm hiểu và có rất nhiều thư viện có sẵn để làm cho cuộc sống của bạn dễ dàng hơn.  

Python cũng có một cộng đồng tích cực xung quanh nó, có nghĩa là có rất nhiều tài nguyên trực tuyến để giúp bạn bắt đầu.

Chuỗi là gì? 

Một chuỗi là một chuỗi các ký tự. Ký tự là các ký hiệu, như chữ cái hoặc số. Vì vậy, về mặt kỹ thuật, câu này là một chuỗi

Nhưng máy tính không đọc được ký tự hoặc ký hiệu. Họ chỉ đọc 1s0s - bậttắt, hoặc; Nói cách khác - nhị phân

Mặc dù bạn nhìn thấy các ký tự trên màn hình máy tính - đằng sau hậu trường - máy tính đang chuyển đổi hoặc mã hóa các ký tự thành 1 và 0. Ngược lại của quá trình này (nhị phân thành các ký tự) được gọi là giải mã. 

Nói một cách đơn giản, chuỗi Python là một chuỗi các ký tự chuyển đổi các lệnh của con người thành ngôn ngữ nhị phân mà máy tính hiểu. 

Các mô-đun trong Python là gì? 

Các mô-đun chia nhỏ các chương trình lớn thành các tệp nhỏ có thể quản lý, có tổ chức. Trong Python, chúng đề cập đến các tệp chứa các câu lệnh và định nghĩa Python. Ví dụ, một tệp chứa mã Python như example.py là một mô-đun. Tên mô-đun của nó sẽ là 'ví dụ'. 

Cách phân tích cú pháp JSON bằng Python.

Bạn có thể sử dụng mô-đun JSON của Python để làm việc với JSON (chuỗi hoặc tệp chứa đối tượng JSON). Sẽ hữu ích nếu bạn nhập mô-đun trước khi sử dụng.

Nhập json

Mô-đun JSON giúp dễ dàng phân tích cú pháp các chuỗi JSON và tệp có chứa các đối tượng JSON.

Có nhiều cách để phân tích cú pháp cùng một thông tin từ một chuỗi được định dạng bằng ký hiệu đối tượng JSON (hoặc bất kỳ biểu mẫu nào khác). 

Cách đơn giản nhất là sử dụng hàm tích hợp 'json'. Nó chấp nhận một tham số tùy chọn được gọi là 'thụt lề' chỉ định mức thụt lề sẽ sử dụng khi phân tích dữ liệu đầu vào. 

Nếu nó là Không có, thì sẽ không có vết lõm. Nếu không, nó sẽ thêm ít nhất một khoảng trắng trước mỗi dòng mã mới. 

Cách tiếp cận này hoạt động tốt cho các trường hợp đơn giản khi bạn chỉ muốn trích xuất một giá trị từ danh sách các giá trị hoặc một cặp khóa / giá trị từ cấu trúc từ điển. 

Nhưng điều gì sẽ xảy ra nếu bạn cần trích xuất nhiều giá trị từ cùng một cấu trúc hoặc muốn phân tích cú pháp chuỗi JSON thành từ điển Python có chứa các cấu trúc lồng nhau? Trong những trường hợp như vậy, tốt hơn là sử dụng phương thức 'json.loads'.

Phương thức json.loads

import json
person = '{"name": "Steve", "languages": ["English", "French"]}'
person_dict = json.loads(person)
# Output: {'name': 'Steve', 'languages': ['English', 'French']}
print( person_dict)
# Output: ['English', 'French']
print(person_dict['languages'])

Ở đây, 'person' là một chuỗi JSON và person_dict là một từ điển.

Điều này sẽ trả về tất cả các khóa và giá trị trong dữ liệu đầu vào dưới dạng từ điển. Nếu không có khóa nào tồn tại, thì Không có khóa nào sẽ được trả về cho cặp khóa / giá trị đó. Giá trị được liên kết với mỗi cặp khóa / giá trị được xác định bằng cách tra cứu mục từ điển của nó với tên của nó.

Python đọc tệp JSON

Bạn có thể sử dụng phương thức json.load để đọc một tệp có chứa đối tượng JSON.

{"name": "Steve", 
"languages": ["English", "French"]
}

Dưới đây là cách bạn có thể phân tích cú pháp tệp này:

import json
with open('path_to_file/person.json', 'r') as f:
data = json.load(f)
# Output: {'name': 'Steve', 'languages': ['English', 'French']}
print(data)

Chuyển đổi chuỗi Python sang JSON

Bạn có thể chuyển đổi từ điển thành chuỗi JSON bằng phương thức json.dumps.

import json
person_dict = {'name': 'Bob',
'age': 12,
'children': None
}
person_json = json.dumps(person_dict)
# Output: {"name": "Bob", "age": 12, "children": null}
print(person_json)

Viết JSON vào một tệp 

Để viết JSON vào một file bằng Python, chúng ta có thể sử dụng phương thức json.dump().

import json
person_dict = {"name": "Steve",
"languages": ["English", "French"],
"married": False,
"age": 33
}
with open('person.txt', 'w') as json_file:
  json.dump(person_dict, json_file)

Trong chương trình trên, chúng tôi đã mở một tệp có tên người.txt ở chế độ viết bằng 'w.' Nếu tệp chưa tồn tại, nó sẽ tạo một tệp. Sau đó, json.dump chuyển đổi person_dict thành chuỗi JSON lưu trong tệp .txt người.

Khi bạn chạy chương trình, nó sẽ tạo tệp .txt người. Tệp có văn bản sau bên trong nó.

{"name": "Steve", "languages": ["English", "French"], "married": false, "age": 33} 

Python Pretty Print JSON

Để phân tích và gỡ lỗi dữ liệu JSON, chúng tôi có thể cần in nó ở định dạng dễ đọc hơn. Bạn có thể làm điều này bằng cách truyền các tham số bổ sung thụt lề và sort_keys vào json.dumps và phương thức json.dump.

import json
person_string = '{"name": "Bob", "languages": "English", "numbers": [2, 1.6, null]}'
# Getting dictionary
person_dict = json.loads(person_string)
# Pretty Printing JSON string back
print(json.dumps(person_dict, indent = 4, sort_keys=True))

Khi bạn chạy chương trình, đầu ra sẽ là:

{
    "languages": "English",
    "name": "Bob",
    "numbers": [
        2,
        1.6,
        null
    ]
}

Trong chương trình trên, chúng tôi đã sử dụng bốn khoảng trắng để thụt lề với các phím được sắp xếp theo thứ tự tăng dần.

Nhân tiện, giá trị mặc định của thụt lề là Không có và giá trị mặc định của sort_keys là False. 

If this seems a little over your head, we have a fantastic and easy-to-understand Introduction to Web Scraping. If it’s rotating residential proxies you’re looking for to ensure a smooth data collection operation, contact our team for details or explore our inclusive monthly packages.

Hỏi đáp

Ai đã tạo ra JSON?

Douglas Crockford đã tạo ra nó vào năm 1999 như là một thay thế cho XML.

Cây cú pháp là gì?

Cây cú pháp hiển thị trực quan cấu trúc ngôn ngữ. Nó chia nhỏ ngôn ngữ thành các phần của câu, thường bỏ qua ngữ cảnh.

Làm cách nào để đọc tệp JSON cục bộ bằng Python?

Đầu tiên, import json module và sau đó mở file bằng tên của file json với hàm open(). Tiếp theo, đọc tệp json bằng load() và đặt dữ liệu json vào một biến.

In this Article:
Leave behind the complexities of web scraping.
Opt for IPBurger’s advanced web intelligence solutions to effortlessly collect real-time public data.
Đăng ký

Tìm hiểu sâu hơn nữa về

Proxy
AJ Tait
The Best HydraProxy Alternative for Reliability, Speed & Transparency

Why More Users Are Looking for a HydraProxy Alternative At first glance, HydraProxy seems like a solid choice. It’s affordable.It offers rotating and static residential proxies.And it gives users flexibility with pay-as-you-go pricing. For casual users? That’s enough. But for data scrapers, sneaker coppers, SEO specialists, and automation users who

Proxy
AJ Tait
The Best Storm Proxies Alternative: Faster, Safer & More Affordable Proxies

Looking for a Storm Proxies Alternative? Storm Proxies sells the dream: simple, affordable proxies that “just work.” And for some users? It kind of delivers. Until it doesn’t. Because here’s the reality—if you’re pulling small data sets, running light scraping jobs, or dipping your toes into sneaker copping, Storm Proxies

Scale Your Business
With The Most Advanced
Proxies On Earth
Tham gia mạng proxy từng đoạt giải thưởng #1