Viết json vào tệp python utf-8

JSON trong Python là một định dạng chuẩn lấy cảm hứng từ JavaScript để trao đổi dữ liệu và truyền dữ liệu dưới dạng định dạng văn bản qua mạng. Nói chung, JSON ở định dạng chuỗi hoặc văn bản. Nó có thể được sử dụng bởi API và cơ sở dữ liệu và nó đại diện cho các đối tượng dưới dạng cặp tên/giá trị. JSON là viết tắt của Ký hiệu đối tượng JavaScript

Cú pháp JSON của Python

JSON được viết dưới dạng cặp khóa và giá trị

{
        "Key":  "Value",
        "Key":  "Value",
} 

JSON rất giống với từ điển Python. Python hỗ trợ JSON và nó có một thư viện sẵn có dưới dạng JSON

Thư viện JSON trong Python

Các mô-đun bên ngoài của 'marshal' và 'pickle' của Python duy trì một phiên bản của thư viện JSON Python. Làm việc với JSON trong Python để thực hiện các hoạt động liên quan đến JSON như mã hóa và giải mã, trước tiên bạn cần nhập thư viện JSON và cho điều đó trong. tập tin py,

import json

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

MethodDescriptiondumps() mã hóa thành các đối tượng JSONdump() mã hóa chuỗi ghi trên fileloads() Giải mã JSON stringload() Giải mã trong khi đọc tệp JSON

Bạn sẽ học được gì

  • JSON trong Python là gì?
  • Thư viện JSON trong Python
  • Python sang JSON (Mã hóa)
  • JSON sang Python (Giải mã)
  • Mã hóa đối tượng phức tạp của Python
  • Giải mã đối tượng JSON phức tạp trong Python
  • Tổng quan về JSONEncoder lớp tuần tự hóa JSON
  • Tổng quan về lớp giải tuần tự hóa JSON JSONDecoder
  • Ngoại lệ liên quan đến Thư viện JSON trong Python
  • Số vô hạn và NaN trong Python
  • Khóa lặp lại trong Chuỗi JSON
  • CLI (Giao diện dòng lệnh) với JSON trong Python
  • Ưu điểm của JSON trong Python
  • Hạn chế triển khai của JSON trong Python
  • Bảng gian lận JSON của Python

Python sang JSON (Mã hóa)

Thư viện JSON của Python theo mặc định thực hiện việc dịch các đối tượng Python thành các đối tượng JSON

PythonJSONdictObjectlistArrayunicodeStringnumber – int, longnumber – intfloatnumber – realTrueTrueFalseFalseNoneNull

Chuyển đổi dữ liệu Python sang JSON được gọi là hoạt động Mã hóa. Việc mã hóa được thực hiện với sự trợ giúp của phương thức thư viện JSON – dumps()

Kết xuất JSON() trong Python

json. dumps() trong Python là một phương thức chuyển đổi các đối tượng từ điển của Python thành định dạng dữ liệu chuỗi JSON. Nó rất hữu ích khi các đối tượng được yêu cầu ở định dạng chuỗi cho các hoạt động như phân tích cú pháp, in, v.v.

Bây giờ hãy thực hiện json đầu tiên của chúng tôi. kết xuất ví dụ mã hóa bằng Python

import json

x = {
  "name": "Ken",
  "age": 45,
  "married": True,
  "children": ("Alice","Bob"),
  "pets": ['Dog'],
  "cars": [
    {"model": "Audi A1", "mpg": 15.1},
    {"model": "Zeep Compass", "mpg": 18.1}
  ]
}
# sorting result in asscending order by keys:
sorted_string = json.dumps(x, indent=4, sort_keys=True)
print(sorted_string)

đầu ra

{"person": {"name": "Kenn", "sex": "male", "age": 28}})

Hãy xem một ví dụ về Python ghi JSON vào tệp để tạo tệp JSON của từ điển bằng cách sử dụng cùng hàm dump()

# here we create new data_file.json file with write mode using file i/o operation 
with open('json_file.json', "w") as file_write:
# write json data into file
json.dump(person_data, file_write)

đầu ra

Không có gì để hiển thị...Trong hệ thống của bạn json_file. json được tạo. Bạn có thể kiểm tra tệp đó như được hiển thị trong ví dụ ghi JSON vào tệp Python bên dưới

Viết json vào tệp python utf-8

JSON sang Python (Giải mã)

Giải mã chuỗi JSON được thực hiện với sự trợ giúp của phương thức sẵn có json. tải () và json. load() của thư viện JSON trong Python. Ở đây bảng dịch hiển thị ví dụ về các đối tượng JSON sang các đối tượng Python rất hữu ích để thực hiện giải mã trong Python của chuỗi JSON

JSONPythonObjectdictArraylistStringunicodenumber – intnumber – int, longnumber – realfloatTrueTrueFalseFalseNullNone

Hãy cùng xem một ví dụ giải mã JSON Python phân tích cú pháp cơ bản với sự trợ giúp của json. chức năng tải,

import json  # json library imported
# json data string
person_data = '{  "person":  { "name":  "Kenn",  "sex":  "male",  "age":  28}}'
# Decoding or converting JSON format in dictionary using loads()
dict_obj = json.loads(person_data)
print(dict_obj)
# check type of dict_obj
print("Type of dict_obj", type(dict_obj))
# get human object details
print("Person......",  dict_obj.get('person'))

đầu ra

{'person': {'name': 'Kenn', 'sex': 'male', 'age': 28}}
Type of dict_obj <class 'dict'>
Person..... {'name': 'John', 'sex': 'male'}

Viết json vào tệp python utf-8

Giải mã tệp JSON hoặc Phân tích cú pháp tệp JSON trong Python

Bây giờ, chúng ta sẽ tìm hiểu cách đọc tệp JSON trong Python với ví dụ JSON phân tích cú pháp Python

GHI CHÚ. Giải mã tệp JSON là thao tác liên quan đến Tệp Nhập/Xuất (I/O). Tệp JSON phải tồn tại trên hệ thống của bạn tại vị trí được chỉ định mà bạn đề cập trong chương trình của mình

Python đọc tệp JSON Ví dụ

import json
#File I/O Open function for read data from JSON File
with open('X:/json_file.json') as file_object:
        # store file data in object
        data = json.load(file_object)
print(data)

Ở đây dữ liệu là một đối tượng từ điển của Python như được hiển thị trong ví dụ về tệp JSON đã đọc ở trên

đầu ra

________số 8

Viết json vào tệp python utf-8

Mã hóa nhỏ gọn trong Python

Khi cần giảm kích thước tệp JSON của mình, bạn có thể sử dụng mã hóa thu gọn trong Python

Thí dụ,

import json
# Create a List that contains dictionary
lst = ['a', 'b', 'c',{'4': 5, '6': 7}]
# separator used for compact representation of JSON.
# Use of ',' to identify list items
# Use of ':' to identify key and value in dictionary
compact_obj = json.dumps(lst, separators=(',', ':'))
print(compact_obj)

đầu ra

import json
0

Định dạng mã JSON (Bản in đẹp)

  • Mục đích là để viết mã được định dạng tốt cho sự hiểu biết của con người. Với sự trợ giúp của bản in đẹp, bất kỳ ai cũng có thể dễ dàng hiểu mã

Thí dụ

import json
1

đầu ra

import json
2

Viết json vào tệp python utf-8

Để hiểu rõ hơn về điều này, hãy thay đổi thụt lề thành 40 và quan sát đầu ra-

Viết json vào tệp python utf-8

Đặt hàng mã JSON

thuộc tính sort_keys trong đối số của hàm kết xuất Python sẽ sắp xếp khóa trong JSON theo thứ tự tăng dần. Đối số sort_keys là một thuộc tính Boolean. Khi đó là sự sắp xếp thực sự được cho phép nếu không thì không. Hãy hiểu với ví dụ sắp xếp chuỗi Python thành JSON

Thí dụ,

import json
3

đầu ra

import json
4

Như bạn có thể quan sát, tuổi của chìa khóa, ô tô, trẻ em, v.v. được sắp xếp theo thứ tự tăng dần

Mã hóa đối tượng phức tạp của Python

Một đối tượng Complex có hai phần khác nhau đó là

  1. phần thực
  2. phần ảo

Viết json vào tệp python utf-8

Thí dụ. 3 +2i

Trước khi thực hiện mã hóa một đối tượng phức tạp, bạn cần kiểm tra một biến có phức tạp hay không. Bạn cần tạo một hàm kiểm tra giá trị được lưu trữ trong một biến bằng cách sử dụng một phương thức thể hiện

Hãy tạo hàm cụ thể để kiểm tra đối tượng phức tạp hay đủ điều kiện để mã hóa

import json
5

đầu ra

import json
6

Giải mã đối tượng JSON phức tạp trong Python

Để giải mã đối tượng phức tạp trong JSON, hãy sử dụng tham số object_hook để kiểm tra chuỗi JSON có chứa đối tượng phức tạp hay không. Hãy hiểu với chuỗi thành JSON Python Ví dụ,

import json
7

đầu ra

import json
8

Tổng quan về JSONEncoder lớp tuần tự hóa JSON

Lớp JSONEncoder được sử dụng để tuần tự hóa bất kỳ đối tượng Python nào trong khi thực hiện mã hóa. Nó chứa ba phương pháp mã hóa khác nhau đó là

  • default(o) – Được triển khai trong lớp con và trả về đối tượng tuần tự hóa cho đối tượng o
  • encode(o) – Giống như kết xuất JSON Phương thức Python trả về chuỗi JSON của cấu trúc dữ liệu Python
  • iterencode(o) – Biểu diễn từng chuỗi một và mã hóa đối tượng o

Với sự trợ giúp của phương thức encode() của lớp JSONEncoder, chúng ta cũng có thể mã hóa bất kỳ đối tượng Python nào như trong ví dụ về bộ mã hóa Python JSON bên dưới

import json
9

đầu ra

import json

x = {
  "name": "Ken",
  "age": 45,
  "married": True,
  "children": ("Alice","Bob"),
  "pets": ['Dog'],
  "cars": [
    {"model": "Audi A1", "mpg": 15.1},
    {"model": "Zeep Compass", "mpg": 18.1}
  ]
}
# sorting result in asscending order by keys:
sorted_string = json.dumps(x, indent=4, sort_keys=True)
print(sorted_string)
0

Tổng quan về lớp giải tuần tự hóa JSON JSONDecoder

Lớp JSONDecoder được sử dụng để giải tuần tự hóa bất kỳ đối tượng Python nào trong khi thực hiện giải mã. Nó chứa ba phương pháp giải mã khác nhau đó là

  • default(o) – Được triển khai trong lớp con và trả về đối tượng được giải tuần tự hóa o đối tượng
  • giải mã (o) - Giống như json. phương thức loading() trả về cấu trúc dữ liệu Python của chuỗi hoặc dữ liệu JSON
  • raw_decode(o) – Trình bày từng từ điển Python một và giải mã đối tượng o

Với sự trợ giúp của phương thức decode() của lớp JSONDecoder, chúng ta cũng có thể giải mã chuỗi JSON như trong ví dụ về bộ giải mã JSON Python bên dưới

import json

x = {
  "name": "Ken",
  "age": 45,
  "married": True,
  "children": ("Alice","Bob"),
  "pets": ['Dog'],
  "cars": [
    {"model": "Audi A1", "mpg": 15.1},
    {"model": "Zeep Compass", "mpg": 18.1}
  ]
}
# sorting result in asscending order by keys:
sorted_string = json.dumps(x, indent=4, sort_keys=True)
print(sorted_string)
1

đầu ra

import json

x = {
  "name": "Ken",
  "age": 45,
  "married": True,
  "children": ("Alice","Bob"),
  "pets": ['Dog'],
  "cars": [
    {"model": "Audi A1", "mpg": 15.1},
    {"model": "Zeep Compass", "mpg": 18.1}
  ]
}
# sorting result in asscending order by keys:
sorted_string = json.dumps(x, indent=4, sort_keys=True)
print(sorted_string)
2

Giải mã dữ liệu JSON từ URL. Ví dụ thực tế cuộc sống

Chúng tôi sẽ tìm nạp dữ liệu của CityBike NYC (Hệ thống chia sẻ xe đạp) từ URL được chỉ định (https. // nguồn cấp dữ liệu. citibikenyc. com/trạm/trạm. json) và chuyển đổi sang định dạng từ điển

Python tải JSON từ tệp Ví dụ

GHI CHÚ. - Đảm bảo thư viện yêu cầu đã được cài đặt trong Python của bạn, Nếu chưa, hãy mở Terminal hoặc CMD và gõ

  • (Đối với Python 3 trở lên) yêu cầu cài đặt pip3
import json

x = {
  "name": "Ken",
  "age": 45,
  "married": True,
  "children": ("Alice","Bob"),
  "pets": ['Dog'],
  "cars": [
    {"model": "Audi A1", "mpg": 15.1},
    {"model": "Zeep Compass", "mpg": 18.1}
  ]
}
# sorting result in asscending order by keys:
sorted_string = json.dumps(x, indent=4, sort_keys=True)
print(sorted_string)
3

đầu ra

import json

x = {
  "name": "Ken",
  "age": 45,
  "married": True,
  "children": ("Alice","Bob"),
  "pets": ['Dog'],
  "cars": [
    {"model": "Audi A1", "mpg": 15.1},
    {"model": "Zeep Compass", "mpg": 18.1}
  ]
}
# sorting result in asscending order by keys:
sorted_string = json.dumps(x, indent=4, sort_keys=True)
print(sorted_string)
4

Ngoại lệ liên quan đến Thư viện JSON trong Python

  • lớp json. JSONDecoderError xử lý ngoại lệ liên quan đến hoạt động giải mã. và nó là một lớp con của ValueError
  • Ngoại lệ – json. JSONDecodeError(tin nhắn, tài liệu)
  • Các tham số của Ngoại lệ là,
    • msg – Thông báo lỗi không được định dạng
    • tài liệu – Tài liệu JSON được phân tích cú pháp
    • pos – bắt đầu lập chỉ mục tài liệu khi không thành công
    • lineno – dòng không hiển thị tương ứng với vị trí
    • dấu hai chấm – cột không tương ứng với pos

Python tải JSON từ tệp Ví dụ

import json

x = {
  "name": "Ken",
  "age": 45,
  "married": True,
  "children": ("Alice","Bob"),
  "pets": ['Dog'],
  "cars": [
    {"model": "Audi A1", "mpg": 15.1},
    {"model": "Zeep Compass", "mpg": 18.1}
  ]
}
# sorting result in asscending order by keys:
sorted_string = json.dumps(x, indent=4, sort_keys=True)
print(sorted_string)
5

Viết json vào tệp python utf-8

Số vô hạn và NaN trong Python

Định dạng trao đổi dữ liệu JSON (RFC – Yêu cầu nhận xét) không cho phép Giá trị vô hạn hoặc Giá trị Nan nhưng không có hạn chế trong Thư viện Python- JSON để thực hiện hoạt động liên quan đến Giá trị vô hạn và Giá trị Nan. Nếu JSON có kiểu dữ liệu INFINITE và Nan thì nó đã chuyển đổi nó thành chữ

Thí dụ,

import json

x = {
  "name": "Ken",
  "age": 45,
  "married": True,
  "children": ("Alice","Bob"),
  "pets": ['Dog'],
  "cars": [
    {"model": "Audi A1", "mpg": 15.1},
    {"model": "Zeep Compass", "mpg": 18.1}
  ]
}
# sorting result in asscending order by keys:
sorted_string = json.dumps(x, indent=4, sort_keys=True)
print(sorted_string)
6

đầu ra

import json

x = {
  "name": "Ken",
  "age": 45,
  "married": True,
  "children": ("Alice","Bob"),
  "pets": ['Dog'],
  "cars": [
    {"model": "Audi A1", "mpg": 15.1},
    {"model": "Zeep Compass", "mpg": 18.1}
  ]
}
# sorting result in asscending order by keys:
sorted_string = json.dumps(x, indent=4, sort_keys=True)
print(sorted_string)
7

Khóa lặp lại trong Chuỗi JSON

RFC chỉ định tên khóa phải là duy nhất trong đối tượng JSON, nhưng không bắt buộc. Thư viện JSON của Python không đưa ra ngoại lệ đối với các đối tượng lặp lại trong JSON. Nó bỏ qua tất cả các cặp khóa-giá trị lặp lại và chỉ xem xét cặp khóa-giá trị cuối cùng trong số chúng

  • Thí dụ,
import json

x = {
  "name": "Ken",
  "age": 45,
  "married": True,
  "children": ("Alice","Bob"),
  "pets": ['Dog'],
  "cars": [
    {"model": "Audi A1", "mpg": 15.1},
    {"model": "Zeep Compass", "mpg": 18.1}
  ]
}
# sorting result in asscending order by keys:
sorted_string = json.dumps(x, indent=4, sort_keys=True)
print(sorted_string)
8

đầu ra

import json

x = {
  "name": "Ken",
  "age": 45,
  "married": True,
  "children": ("Alice","Bob"),
  "pets": ['Dog'],
  "cars": [
    {"model": "Audi A1", "mpg": 15.1},
    {"model": "Zeep Compass", "mpg": 18.1}
  ]
}
# sorting result in asscending order by keys:
sorted_string = json.dumps(x, indent=4, sort_keys=True)
print(sorted_string)
9

CLI (Giao diện dòng lệnh) với JSON trong Python

json. công cụ cung cấp giao diện dòng lệnh để xác thực cú pháp in đẹp của JSON. Hãy xem một ví dụ về CLI

Cách lưu tệp JSON dưới dạng UTF

Mở tệp bạn muốn xác minh/sửa trong Notepad++ Trong menu trên cùng, chọn Mã hóa > Chuyển đổi sang UTF-8 (tùy chọn không có BOM) Save the file.

Cách đặt utf

Sắp xếp tuần tự các đối tượng Unicode thành các chuỗi JSON UTF-8 thay vì \u chuỗi thoát. Bạn cũng có thể đặt mã hóa JSON thành UTF-8. UTF-8 là mặc định được khuyến nghị để có khả năng tương tác tối đa. đặt ensure_ascii=False thành và mã hóa dữ liệu Unicode thành JSON bằng 'UTF-8' .

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

Sau đây là quy trình từng bước để ghi JSON vào tệp. .
Chuẩn bị chuỗi JSON bằng cách chuyển đổi Đối tượng Python thành chuỗi JSON bằng json. hàm bãi ()
Tạo tệp JSON bằng hàm open(filename, 'w'). Chúng tôi đang mở tệp ở chế độ ghi
sử dụng tập tin. .
Đóng tệp JSON

Cách sử dụng utf

UTF-8 sử dụng các quy tắc sau. .
Nếu điểm mã < 128, thì nó được biểu thị bằng giá trị byte tương ứng
Nếu điểm mã >= 128, thì nó được chuyển thành một chuỗi gồm hai, ba hoặc bốn byte, trong đó mỗi byte của chuỗi nằm trong khoảng từ 128 đến 255