Python ghi luồng JSON vào tệp

JSON (JavaScript Object Notation) là một định dạng dữ liệu phổ biến đại diện cho dữ liệu có cấu trúc. Nó được sử dụng rộng rãi trong các API và ứng dụng web. Bạn có thể sử dụng mô-đun JSON Python tích hợp cung cấp tất cả các phương thức cần thiết để làm việc với dữ liệu JSON. Bài viết này đề cập đến mô-đun JSON JSON tiêu chuẩn và giải thích cách phân tích cú pháp, tuần tự hóa, giải tuần tự hóa, mã hóa, giải mã và in đẹp dữ liệu của nó

JSON là gì?

JSON là định dạng trao đổi dữ liệu nhẹ phổ biến lấy cảm hứng từ định dạng cú pháp đối tượng JavaScript được chỉ định bởi RFC 7159 và ECMA-404. Mục đích chính của định dạng JSON là lưu trữ và truyền dữ liệu giữa trình duyệt và máy chủ, nhưng định dạng này được sử dụng rộng rãi bởi các API vi dịch vụ để trao đổi dữ liệu

cú pháp JSON

Cú pháp của JSON rất đơn giản. Nó được xây dựng trên hai cấu trúc đơn giản

  • Tập hợp các cặp tên/giá trị (trong Python, chúng được biểu diễn dưới dạng từ điển Python)
  • Một danh sách có thứ tự các giá trị

Dưới đây là ví dụ về các cấu trúc dữ liệu phổ quát đơn giản này

Bộ sưu tập các cặp tên/giá trị

Các cặp tên/giá trị tạo thành một đối tượng JSON được mô tả bằng dấu ngoặc nhọn

{"name":"James","gender":"male","age":32}
8. Bạn có thể định nghĩa một đối tượng JSON ở dạng được định dạng

{
    "name": "James",
    "gender": "male"
    "age": 32
}

Hoặc dưới dạng một chuỗi (cả hai đối tượng đều giống nhau)

{"name":"James","gender":"male","age":32}

Một danh sách có thứ tự các giá trị

Danh sách các mục có thứ tự được xác định bằng cách sử dụng dấu ngoặc vuông

{"name":"James","gender":"male","age":32}
9 và giữ bất kỳ giá trị nào được phân tách bằng dấu phẩy (
[
    "Apple",
    "Banana",
    "Cherry"
]
0)

[
    "Apple",
    "Banana",
    "Cherry"
]

Danh sách các mục được sắp xếp giống nhau có thể được định nghĩa là một chuỗi đơn

["Apple","Banana","Cherry"]

ràng buộc JSON

Định dạng JSON có một số ràng buộc

  • Các cặp giá trị/tên
    [
        "Apple",
        "Banana",
        "Cherry"
    ]
    1 phải được định nghĩa là một chuỗi trong dấu ngoặc kép (
    [
        "Apple",
        "Banana",
        "Cherry"
    ]
    2)
  • [
        "Apple",
        "Banana",
        "Cherry"
    ]
    3 phải thuộc loại dữ liệu JSON hợp lệ
    • Chuỗi – một số ký tự văn bản thuần túy
    • Số – một số nguyên
    • Đối tượng – tập hợp các cặp khóa/giá trị JSON
    • Mảng – một danh sách các giá trị được sắp xếp theo thứ tự
    • Boolean –
      [
          "Apple",
          "Banana",
          "Cherry"
      ]
      4 hoặc
      [
          "Apple",
          "Banana",
          "Cherry"
      ]
      5
    • Null – đối tượng rỗng
  • Đối tượng JSON hợp lệ không thể chứa các loại dữ liệu khác, ví dụ:
    [
        "Apple",
        "Banana",
        "Cherry"
    ]
    6

Dữ liệu JSON trông như thế nào?

Đây là một ví dụ về cấu trúc dữ liệu JSON

{
    "firstname": "Kamil",
    "lastname": "Abdurahim",
    "age": 43,
    "speaks_languages": ["English", "French", "Amharic"],
    "programming_languages": {
        "Python": 10,
        "C++": 5,
        "Java": 6
    },
    "good_writer": false,
    "finished_this_article": null
}

Làm việc với mô-đun JSON của Python

JSON là một định dạng trao đổi dữ liệu tiêu chuẩn được sử dụng bởi nhiều ngôn ngữ lập trình, bao gồm cả Python. JSON (Ký hiệu đối tượng JavaScript) biểu thị dữ liệu ở định dạng văn bản mà con người có thể đọc được và máy tính dễ dàng xử lý. Python cung cấp một mô-đun tích hợp có tên là JSON để hoạt động với dữ liệu JSON. Mô-đun JSON cho phép bạn chuyển đổi các đối tượng Python thành chuỗi JSON và sao lưu lại. Nó cũng cung cấp các phương thức để tải và lưu các tệp JSON

Ngoài ra, module

[
    "Apple",
    "Banana",
    "Cherry"
]
7 còn có thể dùng để chuyển đổi từ điển Python thành các đối tượng JSON, nó chứa các phương thức xử lý dữ liệu JSON, bao gồm các thao tác sau. phân tích cú pháp, tuần tự hóa, giải tuần tự hóa, mã hóa, giải mã và in đẹp. Nhìn chung, mô-đun
[
    "Apple",
    "Banana",
    "Cherry"
]
7 giúp dễ dàng làm việc với dữ liệu JSON bằng ngôn ngữ lập trình Python

Tuần tự hóa các đối tượng Python thành định dạng JSON

Tuần tự hóa đang dịch cấu trúc dữ liệu thành định dạng có thể được lưu trữ, truyền và tái tạo sau này. Áp dụng cho Python, tuần tự hóa có nghĩa là chúng tôi sẽ dịch các loại dữ liệu cơ bản của Python sang định dạng JSON. Mô-đun

[
    "Apple",
    "Banana",
    "Cherry"
]
7 có thể chuyển đổi từ điển Python hoặc liệt kê các đối tượng thành định dạng JSON (chuỗi)

Đây là cách mô-đun Python

[
    "Apple",
    "Banana",
    "Cherry"
]
7 xử lý quy trình tuần tự hóa

Python classJSON typeint, long, floatnumberstrstringTruetrueFalsefalselist, tuplearraydictobjectNonenullPython sang đối tượng JSON và dịch kiểu dữ liệu

Có hai phương thức có sẵn trong mô-đun Python

[
    "Apple",
    "Banana",
    "Cherry"
]
7 để xử lý quy trình tuần tự hóa

  • – chuyển đổi đối tượng Python thành luồng có định dạng JSON (thường được sử dụng để lưu dữ liệu JSON vào tệp)
  • – chuyển đổi đối tượng Python thành chuỗi có định dạng JSON (tạo đối tượng chuỗi Python chứa dữ liệu JSON)

Tuần tự hóa dữ liệu Python bằng cách sử dụng kết xuất ()

Đây là một ví dụ về tuần tự hóa cấu trúc dữ liệu Python thành luồng JSON bằng phương thức

["Apple","Banana","Cherry"]
2

#!/usr/bin/env python3
import json
import pathlib
BASE_DIR = pathlib.Path(__file__).parent.resolve()
FILES_DIR = f"{BASE_DIR}/files"
python_data = {
    "user": {
        "name": " kamil",
        "age": 43,
        "Place": "Ethiopia",
        "gender": "male"
    }
}
# saving Python dictionary object to JSON file
with open(f"{FILES_DIR}/json_data.json", "w") as file_stream:
    json.dump(python_data, file_stream)
    file_stream.write('\n')

Đây là một kết quả thực thi

Liên kết được Tài trợ

1. Processing JSON in Python - Serializing Python data using dump

Tuần tự hóa dữ liệu Python bằng cách sử dụng kết xuất ()

Đây là một ví dụ về tuần tự hóa cấu trúc dữ liệu Python thành chuỗi Python được định dạng JSON bằng phương thức

["Apple","Banana","Cherry"]
3

#!/usr/bin/env python3
import json
import pathlib
BASE_DIR = pathlib.Path(__file__).parent.resolve()
FILES_DIR = f"{BASE_DIR}/files"
python_data = {
    "user": {
        "name": " kamil",
        "age": 43,
        "Place": "Ethiopia",
        "gender": "male"
    }
}
json_string = json.dumps(python_data)
print(f'JSON string: {json_string}')

Đây là một kết quả thực thi

2. Processing JSON in Python - Serializing Python data using dumps

Giải tuần tự hóa dữ liệu JSON thành đối tượng Python

Quá trình deserialization ngược lại với serialization. Nó chuyển đổi dữ liệu JSON thành danh sách Python hoặc đối tượng từ điển

Đây là cách mô-đun Python

[
    "Apple",
    "Banana",
    "Cherry"
]
7 xử lý quy trình khử lưu huỳnh

JSON typePython classnullNonetrueTruefalseFalsenumber (int)intnumber (real)floatarrayliststringstrobjectdictJSON dịch kiểu dữ liệu đối tượng Python

Có hai phương thức có sẵn trong mô-đun Python

[
    "Apple",
    "Banana",
    "Cherry"
]
7 để xử lý quy trình khử lưu huỳnh

  • – chuyển đổi luồng có định dạng JSON thành đối tượng Python
  • – chuyển đổi một chuỗi định dạng JSON thành một đối tượng Python

Deserializing luồng sử dụng load()

Để deserialize theJSON formated stream thành một đối tượng Python, bạn cần sử dụng phương thức

["Apple","Banana","Cherry"]
6

#!/usr/bin/env python3
import json
import pathlib
BASE_DIR = pathlib.Path(__file__).parent.resolve()
FILES_DIR = f"{BASE_DIR}/files"
python_data = None
with open(f"{FILES_DIR}/json_data.json", "r") as file_stream:
    python_data = json.load(file_stream)
 
print(f'Deserialized data type: {type(python_data)}')
print(f'Deserialized data: {python_data}')

Đây là một kết quả thực thi

3. Processing JSON in Python - Deserializing JSON stream using load

Deserializing chuỗi sử dụng tải()

Để giải tuần tự hóa chuỗi định dạng JSON thành một đối tượng Python, bạn cần sử dụng phương thức

["Apple","Banana","Cherry"]
7

#!/usr/bin/env python3
import json
import pathlib
BASE_DIR = pathlib.Path(__file__).parent.resolve()
FILES_DIR = f"{BASE_DIR}/files"
python_data = None
# read JSON file
with open(f"{FILES_DIR}/json_data.json", "r") as file_stream:
    data = file_stream.read()
    
    print(f'data variable type: {type(data)}')
    print(f'data variable content: {data}')
    python_data = json.loads(data)
 
print(f'Deserialized data type: {type(python_data)}')
print(f'Deserialized data: {python_data}')

Đây là một kết quả thực thi

4. Processing JSON in Python - Deserializing JSON string using loads

Đọc dữ liệu JSON trong Python

Tùy thuộc vào loại nguồn dữ liệu JSON (chuỗi được định dạng JSON hoặc luồng được định dạng JSON), có hai phương thức có sẵn trong mô-đun Python

[
    "Apple",
    "Banana",
    "Cherry"
]
7 để xử lý thao tác đọc

  • – đọc luồng có định dạng JSON và tạo đối tượng Python từ luồng đó
  • – đọc một chuỗi có định dạng JSON và tạo một đối tượng Python từ chuỗi đó

Đọc dữ liệu từ một tệp bằng load()

Bạn cần sử dụng phương thức

["Apple","Banana","Cherry"]
6 để đọc luồng có định dạng JSON và chuyển đổi nó thành một đối tượng Python. Luồng có định dạng JSON được trả về bằng phương thức
{
    "firstname": "Kamil",
    "lastname": "Abdurahim",
    "age": 43,
    "speaks_languages": ["English", "French", "Amharic"],
    "programming_languages": {
        "Python": 10,
        "C++": 5,
        "Java": 6
    },
    "good_writer": false,
    "finished_this_article": null
}
0 tích hợp sẵn của Python. Để biết thêm thông tin về thao tác với tệp, chúng tôi khuyên bạn nên xem bài viết Làm việc với tệp trong Python

#!/usr/bin/env python3
import json
import pathlib
BASE_DIR = pathlib.Path(__file__).parent.resolve()
FILES_DIR = f"{BASE_DIR}/files"
python_data = None
with open(f"{FILES_DIR}/json_data.json", "r") as file_stream:
    python_data = json.load(file_stream)
 
print(f'Python data: {python_data}')

Đây là một kết quả thực thi

5. Processing JSON in Python - Reading JSON data from file using load

Đọc dữ liệu từ các tệp bằng tải ()

Bạn cần sử dụng phương thức

["Apple","Banana","Cherry"]
7 để đọc chuỗi định dạng JSON và chuyển đổi nó thành một đối tượng Python. Chuỗi định dạng JSON có thể được lấy từ tệp bằng cách sử dụng phương thức
{
    "firstname": "Kamil",
    "lastname": "Abdurahim",
    "age": 43,
    "speaks_languages": ["English", "French", "Amharic"],
    "programming_languages": {
        "Python": 10,
        "C++": 5,
        "Java": 6
    },
    "good_writer": false,
    "finished_this_article": null
}
0 tích hợp sẵn của Python. Chúng tôi đề xuất bài viết Làm việc với tệp trong Python để biết thêm thông tin về hoạt động của tệp

#!/usr/bin/env python3
import json
import pathlib
BASE_DIR = pathlib.Path(__file__).parent.resolve()
FILES_DIR = f"{BASE_DIR}/files"
python_data = None
with open(f"{FILES_DIR}/json_data.json", "r") as file_stream:
    python_data = json.load(file_stream)
 
print(f'Python data: {python_data}')

Đây là một kết quả thực thi

6. Processing JSON in Python - Reading JSON data from file using loads

Viết dữ liệu JSON vào một tệp bằng Python

Tùy thuộc vào loại dữ liệu JSON (chuỗi được định dạng JSON hoặc luồng được định dạng JSON), có hai phương thức có sẵn trong mô-đun

[
    "Apple",
    "Banana",
    "Cherry"
]
7 của Python để xử lý thao tác ghi

  • – chuyển đổi đối tượng Python thành luồng có định dạng JSON (thường được sử dụng để lưu dữ liệu thẳng vào tệp)
  • – chuyển đổi đối tượng Python thành một chuỗi có định dạng JSON (tạo ra một đối tượng chuỗi Python có thể được ghi vào tệp)

Ghi dữ liệu vào tệp bằng dump()

Để ghi luồng có định dạng JSON vào một tệp, bạn cần sử dụng phương thức

{
    "firstname": "Kamil",
    "lastname": "Abdurahim",
    "age": 43,
    "speaks_languages": ["English", "French", "Amharic"],
    "programming_languages": {
        "Python": 10,
        "C++": 5,
        "Java": 6
    },
    "good_writer": false,
    "finished_this_article": null
}
4 kết hợp với phương thức
{
    "firstname": "Kamil",
    "lastname": "Abdurahim",
    "age": 43,
    "speaks_languages": ["English", "French", "Amharic"],
    "programming_languages": {
        "Python": 10,
        "C++": 5,
        "Java": 6
    },
    "good_writer": false,
    "finished_this_article": null
}
0 tích hợp sẵn của Python

{"name":"James","gender":"male","age":32}
1

Đây là một ví dụ đầu ra

7. Processing JSON in Python - Writing JSON data into file using dump

Ghi dữ liệu vào tệp bằng cách sử dụng kết xuất ()

Để ghi chuỗi có định dạng JSON vào một tệp, bạn cần sử dụng phương thức

{
    "firstname": "Kamil",
    "lastname": "Abdurahim",
    "age": 43,
    "speaks_languages": ["English", "French", "Amharic"],
    "programming_languages": {
        "Python": 10,
        "C++": 5,
        "Java": 6
    },
    "good_writer": false,
    "finished_this_article": null
}
6 kết hợp với phương thức
{
    "firstname": "Kamil",
    "lastname": "Abdurahim",
    "age": 43,
    "speaks_languages": ["English", "French", "Amharic"],
    "programming_languages": {
        "Python": 10,
        "C++": 5,
        "Java": 6
    },
    "good_writer": false,
    "finished_this_article": null
}
0 tích hợp sẵn trong Python

{"name":"James","gender":"male","age":32}
2

Đây là một ví dụ đầu ra

8. Processing JSON in Python - Writing JSON data into file using dumps

Mã hóa và giải mã các đối tượng JSON tùy chỉnh trong Python

Mặc dù mô-đun

[
    "Apple",
    "Banana",
    "Cherry"
]
7 có thể xử lý hầu hết các loại Python tích hợp. Nó không hiểu cách mã hóa các loại dữ liệu tùy chỉnh theo mặc định. Nếu bạn cần mã hóa một đối tượng tùy chỉnh, bạn có thể mở rộng một lớp và ghi đè phương thức
{
    "firstname": "Kamil",
    "lastname": "Abdurahim",
    "age": 43,
    "speaks_languages": ["English", "French", "Amharic"],
    "programming_languages": {
        "Python": 10,
        "C++": 5,
        "Java": 6
    },
    "good_writer": false,
    "finished_this_article": null
}
9 của nó. Phương thức này được sử dụng cho các đối tượng tùy chỉnh JSONinfy

Ví dụ về mã hóa đối tượng tùy chỉnh trong Python

Hãy xem ví dụ. Giả sử bạn có một vài lớp do người dùng định nghĩa. một

#!/usr/bin/env python3
import json
import pathlib
BASE_DIR = pathlib.Path(__file__).parent.resolve()
FILES_DIR = f"{BASE_DIR}/files"
python_data = {
    "user": {
        "name": " kamil",
        "age": 43,
        "Place": "Ethiopia",
        "gender": "male"
    }
}
# saving Python dictionary object to JSON file
with open(f"{FILES_DIR}/json_data.json", "w") as file_stream:
    json.dump(python_data, file_stream)
    file_stream.write('\n')
0 và một
#!/usr/bin/env python3
import json
import pathlib
BASE_DIR = pathlib.Path(__file__).parent.resolve()
FILES_DIR = f"{BASE_DIR}/files"
python_data = {
    "user": {
        "name": " kamil",
        "age": 43,
        "Place": "Ethiopia",
        "gender": "male"
    }
}
# saving Python dictionary object to JSON file
with open(f"{FILES_DIR}/json_data.json", "w") as file_stream:
    json.dump(python_data, file_stream)
    file_stream.write('\n')
1Và bạn muốn sắp xếp chúng thành một tài liệu JSON

Đó là cách bạn có thể làm điều đó

{"name":"James","gender":"male","age":32}
3

Đây là một ví dụ đầu ra

9. Processing JSON in Python - Example of custom object encoding in Python

Ví dụ về giải mã đối tượng tùy chỉnh trong Python

Nếu bạn cần chuyển đổi tài liệu JSON thành một số đối tượng Python khác (tôi. e. , không phải là từ điển mặc định), cách đơn giản nhất để làm điều đó là sử dụng lớp và đối số của phương thức

["Apple","Banana","Cherry"]
6 hoặc phương thức
["Apple","Banana","Cherry"]
7

Các

{"name":"James","gender":"male","age":32}
4

Đây là một ví dụ đầu ra

10. Processing JSON in Python - Example of custom object decoding in Python

Làm cách nào để in dữ liệu JSON đẹp bằng Python?

Có hai phương pháp để bạn in một thông báo JSON đẹp mắt

  • Sử dụng đối số
    #!/usr/bin/env python3
    import json
    import pathlib
    BASE_DIR = pathlib.Path(__file__).parent.resolve()
    FILES_DIR = f"{BASE_DIR}/files"
    python_data = {
        "user": {
            "name": " kamil",
            "age": 43,
            "Place": "Ethiopia",
            "gender": "male"
        }
    }
    # saving Python dictionary object to JSON file
    with open(f"{FILES_DIR}/json_data.json", "w") as file_stream:
        json.dump(python_data, file_stream)
        file_stream.write('\n')
    4 của phương thức
    ["Apple","Banana","Cherry"]
    3 – đây là một tùy chọn lý tưởng khi bạn đang in các thông báo JSON từ mã Python của mình
  • Sử dụng mô-đun – bạn có thể sử dụng phương pháp này khi cần định dạng một thông báo JSON trong trình bao của mình

In JSON đẹp bằng cách sử dụng kết xuất ()

In JSON đẹp bằng phương pháp

["Apple","Banana","Cherry"]
3 rất đơn giản

{"name":"James","gender":"male","age":32}
5

Đối số

#!/usr/bin/env python3
import json
import pathlib
BASE_DIR = pathlib.Path(__file__).parent.resolve()
FILES_DIR = f"{BASE_DIR}/files"
python_data = {
    "user": {
        "name": " kamil",
        "age": 43,
        "Place": "Ethiopia",
        "gender": "male"
    }
}
# saving Python dictionary object to JSON file
with open(f"{FILES_DIR}/json_data.json", "w") as file_stream:
    json.dump(python_data, file_stream)
    file_stream.write('\n')
4 xác định thụt đầu dòng (số hoặc khoảng trắng) cho các đối tượng JSON trong quá trình in

Đây là một kết quả thực thi

11. Processing JSON in Python - Pretty printing JSON using dumps

Để định dạng tài liệu JSON trong trình bao của bạn mà không cần sử dụng công cụ của bên thứ ba, bạn có thể sử dụng mô-đun

#!/usr/bin/env python3
import json
import pathlib
BASE_DIR = pathlib.Path(__file__).parent.resolve()
FILES_DIR = f"{BASE_DIR}/files"
python_data = {
    "user": {
        "name": " kamil",
        "age": 43,
        "Place": "Ethiopia",
        "gender": "male"
    }
}
# saving Python dictionary object to JSON file
with open(f"{FILES_DIR}/json_data.json", "w") as file_stream:
    json.dump(python_data, file_stream)
    file_stream.write('\n')
8 Python

{"name":"James","gender":"male","age":32}
6

Đây là một ví dụ

12. Processing JSON in Python - Pretty printing JSON using json.tools module

Làm cách nào để sắp xếp các khóa JSON trong Python?

Khi cần sắp xếp các khóa JSON (sắp xếp các đối tượng JSON theo tên), bạn có thể đặt đối số

#!/usr/bin/env python3
import json
import pathlib
BASE_DIR = pathlib.Path(__file__).parent.resolve()
FILES_DIR = f"{BASE_DIR}/files"
python_data = {
    "user": {
        "name": " kamil",
        "age": 43,
        "Place": "Ethiopia",
        "gender": "male"
    }
}
# saving Python dictionary object to JSON file
with open(f"{FILES_DIR}/json_data.json", "w") as file_stream:
    json.dump(python_data, file_stream)
    file_stream.write('\n')
9 thành
#!/usr/bin/env python3
import json
import pathlib
BASE_DIR = pathlib.Path(__file__).parent.resolve()
FILES_DIR = f"{BASE_DIR}/files"
python_data = {
    "user": {
        "name": " kamil",
        "age": 43,
        "Place": "Ethiopia",
        "gender": "male"
    }
}
json_string = json.dumps(python_data)
print(f'JSON string: {json_string}')
0 trong phương thức
["Apple","Banana","Cherry"]
3

{"name":"James","gender":"male","age":32}
7

Đây là một kết quả thực thi

13. Processing JSON in Python - Sort JSON keys in Python

Bản tóm tắt

Bài viết này trình bày các kiến ​​thức cơ bản và kỹ thuật xử lý JSON nâng cao trong Python, bao gồm phân tích cú pháp, tuần tự hóa, giải tuần tự hóa, mã hóa, giải mã và in dữ liệu JSON đẹp mắt bằng Python. Khả năng xử lý JSON bằng Python là kỹ năng thực hành bắt buộc đối với mọi kỹ sư tự động hóa AWS, chẳng hạn như khi bạn cần xử lý quá trình xử lý luồng DynamoDB trong hàm AWS Lambda của mình

Làm cách nào để ghi đầu ra JSON vào một tệp trong Python?

Một cách khác để ghi JSON vào tệp là sử dụng json. phương thức dump() Gói JSON có chức năng “dump” trực tiếp ghi từ điển vào một tệp ở dạng JSON mà không cần chuyển đổi nó .

Làm cách nào để truyền tệp JSON bằng Python?

Làm cách nào chúng tôi có thể viết JSON phát trực tuyến bằng Python? . Để nối thêm vào tệp JSON phát trực tuyến, chúng tôi chỉ cần mở tệp đó ở chế độ nối thêm và viết ký tự kiểm soát tiền tố và hậu tố như được chỉ định trong RFC 7464 .

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

bạn có thể biến nó thành JSON trong Python bằng cách sử dụng json. hàm tải() . json. hàm loading() chấp nhận đầu vào là một chuỗi hợp lệ và chuyển đổi nó thành một từ điển Python.