JSON

Báo cáo vấn đề Xem nguồn Nightly · 7.3 · 7.2 · 7.1 · 7.0 · 6.5

JSON mô-đun là một mô-đun Starlark gồm các hàm liên quan đến JSON.

Hội viên

giải mã

unknown json.decode(x, default=unbound)

Hàm giải mã có một tham số vị trí bắt buộc: chuỗi JSON. Phương thức này trả về giá trị Starlark mà chuỗi biểu thị.
  • "null", "true""false" được phân tích cú pháp dưới dạng None, TrueFalse.
  • Số được phân tích cú pháp dưới dạng int hoặc float nếu chứa dấu thập phân hoặc số mũ. Mặc dù JSON không có cú pháp cho các giá trị không hữu hạn, nhưng các giá trị rất lớn có thể được giải mã là vô cực.
  • đối tượng JSON được phân tích cú pháp dưới dạng một lệnh chính của Starlark mới chưa được cố định. Nếu một chuỗi khoá xuất hiện nhiều lần trong đối tượng, thì giá trị mới nhất của khoá sẽ được giữ lại.
  • một mảng JSON được phân tích cú pháp dưới dạng danh sách Starlark mới chưa bị đóng băng.
Nếu x không phải là mã hoá JSON hợp lệ và tham số default không bắt buộc được chỉ định (bao gồm cả tham số được chỉ định là None), thì hàm này sẽ trả về giá trị default. Nếu x không phải là bộ mã hoá JSON hợp lệ và tham số default không bắt buộc không được chỉ định, thì hàm này sẽ không thành công.

Thông số

Thông số Mô tả
x string; bắt buộc
Chuỗi JSON để giải mã.
default mặc định là unbound
Nếu được chỉ định, giá trị sẽ trả về khi không thể giải mã x.

mã hoá

string json.encode(x)

Hàm mã hoá chấp nhận một đối số vị trí bắt buộc. Đối số này sẽ chuyển đổi thành JSON theo trường hợp:

  • Không, Đúng và Sai lần lượt được chuyển đổi thành "null", "true" và "false".
  • Số nguyên, bất kể lớn như thế nào, vẫn được mã hoá dưới dạng số nguyên thập phân. Một số bộ giải mã có thể không giải mã được số nguyên rất lớn.
  • Số thực được mã hoá bằng dấu thập phân/số mũ hoặc cả hai, ngay cả khi giá trị số của số thực là số nguyên. Đây là một lỗi khi mã hoá một giá trị dấu phẩy động không hữu hạn.
  • Giá trị chuỗi được mã hoá dưới dạng giá trị cố định kiểu chuỗi JSON biểu thị giá trị đó. Mỗi giá trị thay thế chưa ghép nối sẽ được thay thế bằng U+FFFD.
  • Một dict được mã hoá dưới dạng đối tượng JSON, theo thứ tự khoá. Đây là lỗi nếu bất kỳ khoá nào không phải là chuỗi.
  • Danh sách hoặc bộ dữ liệu được mã hoá dưới dạng mảng JSON.
  • Giá trị giống cấu trúc được mã hoá dưới dạng đối tượng JSON, theo thứ tự tên trường.
Kiểu do ứng dụng xác định có thể xác định phương thức mã hoá JSON riêng. Việc mã hoá bất kỳ giá trị nào khác đều dẫn đến lỗi.

Thông số

Thông số Mô tả
x bắt buộc

encode_indent

string json.encode_indent(x, *, prefix='', indent='\t')

Hàm encode_indent tương đương với json.indent(json.encode(x), ...). Hãy xem indent để biết nội dung mô tả về các tham số định dạng.

Thông số

Thông số Mô tả
x bắt buộc
prefix string; giá trị mặc định là ''
indent string; giá trị mặc định là '\t'

thụt lề

string json.indent(s, *, prefix='', indent='\t')

Hàm thụt lề trả về dạng thụt lề của một chuỗi được mã hoá JSON hợp lệ. Mỗi phần tử mảng hoặc trường đối tượng xuất hiện trên một dòng mới, bắt đầu bằng chuỗi tiền tố, theo sau là một hoặc nhiều bản sao của chuỗi thụt lề, tuỳ theo độ sâu lồng nhau. Hàm này chấp nhận một tham số vị trí bắt buộc là chuỗi JSON và hai tham số chuỗi chỉ dành cho từ khoá không bắt buộc là tiền tố và thụt lề, chỉ định tiền tố của mỗi dòng mới và đơn vị thụt lề. Nếu giá trị nhập vào không hợp lệ, hàm có thể bị lỗi hoặc trả về giá trị đầu ra không hợp lệ.

Thông số

Thông số Mô tả
s string; bắt buộc
prefix string; giá trị mặc định là ''
indent string; giá trị mặc định là '\t'