Hướng dẫn write json to file python utf 8 - viết json vào tệp python utf 8

Tôi đang cố gắng xuất một số ký tự UTF-8 vào tệp JSON.

Khi tôi lưu tệp, họ đang được viết như thế này:

{"SOME_KEY": "Enviar Invitaci \ U00F3N Privada"}

Trên đây là hợp lệ và hoạt động. Khi tôi tải tệp và in 'some_key', nó sẽ hiển thị "Enviar Invitación Privada" trong thiết bị đầu cuối.

Dù sao thì có cách nào để viết tệp JSON với "SOMOM_KEY" là phiên bản được mã hóa, như thế này không?

{"SOME_KEY": "Enviar Invitación Privada"}

Hỏi ngày 30 tháng 4 năm 2013 lúc 2:39Apr 30, 2013 at 2:39

Hướng dẫn write json to file python utf 8 - viết json vào tệp python utf 8

1

Sử dụng Python 3.4.3 ở đây và sử dụng

>>> print json.dumps(x, ensure_ascii=False)
{"some_key": "Enviar invitación privada"}
6 thay vì
>>> print json.dumps(x, ensure_ascii=False)
{"some_key": "Enviar invitación privada"}
7:

    with open("example.json","w", encoding='utf-8') as jsonfile:
        json.dump(data,jsonfile,ensure_ascii=False)

là cách tiêu chuẩn để viết JSON vào tệp được mã hóa UTF-8.

Nếu bạn muốn các điểm mã đã thoát thay vì các ký tự trong tệp của bạn, hãy đặt

>>> print json.dumps(x, ensure_ascii=False)
{"some_key": "Enviar invitación privada"}
8. Điều này viết ví dụ như euro-saracter
>>> print json.dumps(x, ensure_ascii=False)
{"some_key": "Enviar invitación privada"}
9 là
>>> import json
>>> json.dumps(['foo', {'bar': ('baz', None, 1.0, 2)}])
'["foo", {"bar": ["baz", null, 1.0, 2]}]'
>>> print(json.dumps("\"foo\bar"))
"\"foo\bar"
>>> print(json.dumps('\u1234'))
"\u1234"
>>> print(json.dumps('\\'))
"\\"
>>> print(json.dumps({"c": 0, "b": 0, "a": 0}, sort_keys=True))
{"a": 0, "b": 0, "c": 0}
>>> from io import StringIO
>>> io = StringIO()
>>> json.dump(['streaming API'], io)
>>> io.getvalue()
'["streaming API"]'
0 trực tiếp vào tệp của bạn.

Đã trả lời ngày 13 tháng 3 năm 2016 lúc 9:12Mar 13, 2016 at 9:12

Hướng dẫn write json to file python utf 8 - viết json vào tệp python utf 8

user3194532user3194532user3194532

6377 Huy hiệu bạc7 Huy hiệu đồng7 silver badges7 bronze badges

0

Đặt

>>> import json
>>> json.dumps(['foo', {'bar': ('baz', None, 1.0, 2)}])
'["foo", {"bar": ["baz", null, 1.0, 2]}]'
>>> print(json.dumps("\"foo\bar"))
"\"foo\bar"
>>> print(json.dumps('\u1234'))
"\u1234"
>>> print(json.dumps('\\'))
"\\"
>>> print(json.dumps({"c": 0, "b": 0, "a": 0}, sort_keys=True))
{"a": 0, "b": 0, "c": 0}
>>> from io import StringIO
>>> io = StringIO()
>>> json.dump(['streaming API'], io)
>>> io.getvalue()
'["streaming API"]'
1 thành
>>> import json
>>> json.dumps(['foo', {'bar': ('baz', None, 1.0, 2)}])
'["foo", {"bar": ["baz", null, 1.0, 2]}]'
>>> print(json.dumps("\"foo\bar"))
"\"foo\bar"
>>> print(json.dumps('\u1234'))
"\u1234"
>>> print(json.dumps('\\'))
"\\"
>>> print(json.dumps({"c": 0, "b": 0, "a": 0}, sort_keys=True))
{"a": 0, "b": 0, "c": 0}
>>> from io import StringIO
>>> io = StringIO()
>>> json.dump(['streaming API'], io)
>>> io.getvalue()
'["streaming API"]'
2:

>>> print json.dumps(x, ensure_ascii=False)
{"some_key": "Enviar invitación privada"}

Đã trả lời ngày 30 tháng 4 năm 2013 lúc 2:41Apr 30, 2013 at 2:41

BlenderBlenderBlender

Phù bằng vàng 282K52430 Huy hiệu bạc488 Huy hiệu đồng52 gold badges430 silver badges488 bronze badges

2

Các tùy chọn loại trừ lẫn nhau để kiểm soát khoảng trắng.

Các tùy chọn loại trừ lẫn nhau để kiểm soát khoảng trắng.

-H,-Helplor
Hiển thị tin nhắn trợ giúp. json
Chú thích codecs import open
Như đã lưu ý trong ERRATA cho RFC 7159, JSON cho phép các ký tự U+2028 (phân tách dòng) và U+2029 (phân tách đoạn văn) trong các chuỗi, trong khi JavaScript (theo phiên bản ECMAScript 5.1) thì không. = { 'text': u'木村' }
Tệp này chứa văn bản unicode hai chiều có thể được giải thích hoặc biên dịch khác với những gì xuất hiện dưới đây. Để xem xét, hãy mở tệp trong một trình soạn thảo cho thấy các ký tự Unicode ẩn. Tìm hiểu thêm về các ký tự unicode hai chiều open('foo.json', 'w', encoding= 'utf-8') as fp:
#-*-Mã hóa: UTF-8-*-.dump(o, fp, ensure_ascii= False)
Nhập khẩu open('foo.json', 'r', encoding= 'utf-8') as fp:
FromCodecsimportopen json.load(fp)['text'].encode('utf-8')

Các tùy chọn loại trừ lẫn nhau để kiểm soát khoảng trắng. Lib/json/__init__.py


-H,-HelplorRFC 7159 (which obsoletes RFC 4627) and by ECMA-404, is a lightweight data interchange format inspired by JavaScript object literal syntax (although it is not a strict subset of JavaScript 1 ).

Hiển thị tin nhắn trợ giúp.

Chú thích

Như đã lưu ý trong ERRATA cho RFC 7159, JSON cho phép các ký tự U+2028 (phân tách dòng) và U+2029 (phân tách đoạn văn) trong các chuỗi, trong khi JavaScript (theo phiên bản ECMAScript 5.1) thì không.

Mã nguồn: lib/json/__ init__.py

>>> import json
>>> json.dumps(['foo', {'bar': ('baz', None, 1.0, 2)}])
'["foo", {"bar": ["baz", null, 1.0, 2]}]'
>>> print(json.dumps("\"foo\bar"))
"\"foo\bar"
>>> print(json.dumps('\u1234'))
"\u1234"
>>> print(json.dumps('\\'))
"\\"
>>> print(json.dumps({"c": 0, "b": 0, "a": 0}, sort_keys=True))
{"a": 0, "b": 0, "c": 0}
>>> from io import StringIO
>>> io = StringIO()
>>> json.dump(['streaming API'], io)
>>> io.getvalue()
'["streaming API"]'

JSON (ký hiệu đối tượng JavaScript), được chỉ định bởi RFC 7159 (trong đó lỗi thời RFC 4627) và bởi ECMA-404, là một định dạng trao đổi dữ liệu nhẹ lấy cảm hứng từ JavaScript Object Syntax (mặc dù nó không phải là một bản phụ của JavaScript 1).

>>> import json
>>> json.dumps([1, 2, 3, {'4': 5, '6': 7}], separators=(',', ':'))
'[1,2,3,{"4":5,"6":7}]'

Cảnh báo

>>> import json
>>> print(json.dumps({'4': 5, '6': 7}, sort_keys=True, indent=4))
{
    "4": 5,
    "6": 7
}

Hãy thận trọng khi phân tích dữ liệu JSON từ các nguồn không tin cậy. Một chuỗi JSON độc hại có thể khiến bộ giải mã tiêu thụ CPU và tài nguyên bộ nhớ đáng kể. Giới hạn kích thước của dữ liệu được phân tích cú pháp được khuyến nghị.

>>> import json
>>> json.loads('["foo", {"bar":["baz", null, 1.0, 2]}]')
['foo', {'bar': ['baz', None, 1.0, 2]}]
>>> json.loads('"\\"foo\\bar"')
'"foo\x08ar'
>>> from io import StringIO
>>> io = StringIO('["streaming API"]')
>>> json.load(io)
['streaming API']

>>> import json
>>> json.dumps(['foo', {'bar': ('baz', None, 1.0, 2)}])
'["foo", {"bar": ["baz", null, 1.0, 2]}]'
>>> print(json.dumps("\"foo\bar"))
"\"foo\bar"
>>> print(json.dumps('\u1234'))
"\u1234"
>>> print(json.dumps('\\'))
"\\"
>>> print(json.dumps({"c": 0, "b": 0, "a": 0}, sort_keys=True))
{"a": 0, "b": 0, "c": 0}
>>> from io import StringIO
>>> io = StringIO()
>>> json.dump(['streaming API'], io)
>>> io.getvalue()
'["streaming API"]'
3 phơi bày API quen thuộc với người dùng của Thư viện tiêu chuẩn
>>> import json
>>> json.dumps(['foo', {'bar': ('baz', None, 1.0, 2)}])
'["foo", {"bar": ["baz", null, 1.0, 2]}]'
>>> print(json.dumps("\"foo\bar"))
"\"foo\bar"
>>> print(json.dumps('\u1234'))
"\u1234"
>>> print(json.dumps('\\'))
"\\"
>>> print(json.dumps({"c": 0, "b": 0, "a": 0}, sort_keys=True))
{"a": 0, "b": 0, "c": 0}
>>> from io import StringIO
>>> io = StringIO()
>>> json.dump(['streaming API'], io)
>>> io.getvalue()
'["streaming API"]'
4 và
>>> import json
>>> json.dumps(['foo', {'bar': ('baz', None, 1.0, 2)}])
'["foo", {"bar": ["baz", null, 1.0, 2]}]'
>>> print(json.dumps("\"foo\bar"))
"\"foo\bar"
>>> print(json.dumps('\u1234'))
"\u1234"
>>> print(json.dumps('\\'))
"\\"
>>> print(json.dumps({"c": 0, "b": 0, "a": 0}, sort_keys=True))
{"a": 0, "b": 0, "c": 0}
>>> from io import StringIO
>>> io = StringIO()
>>> json.dump(['streaming API'], io)
>>> io.getvalue()
'["streaming API"]'
5.

>>> import json
>>> def as_complex(dct):
...     if '__complex__' in dct:
...         return complex(dct['real'], dct['imag'])
...     return dct
...
>>> json.loads('{"__complex__": true, "real": 1, "imag": 2}',
...     object_hook=as_complex)
(1+2j)
>>> import decimal
>>> json.loads('1.1', parse_float=decimal.Decimal)
Decimal('1.1')

Mã hóa phân cấp đối tượng Python cơ bản:

>>> import json
>>> class ComplexEncoder(json.JSONEncoder):
...     def default(self, obj):
...         if isinstance(obj, complex):
...             return [obj.real, obj.imag]
...         # Let the base class default method raise the TypeError
...         return json.JSONEncoder.default(self, obj)
...
>>> json.dumps(2 + 1j, cls=ComplexEncoder)
'[2.0, 1.0]'
>>> ComplexEncoder().encode(2 + 1j)
'[2.0, 1.0]'
>>> list(ComplexEncoder().iterencode(2 + 1j))
['[2.0', ', 1.0', ']']

Mã hóa nhỏ gọn:

$ echo '{"json":"obj"}' | python -m json.tool
{
    "json": "obj"
}
$ echo '{1.2:3.4}' | python -m json.tool
Expecting property name enclosed in double quotes: line 1 column 2 (char 1)

In đẹp:Command Line Interface for detailed documentation.

Giải mã JSON:

Chuyên giải mã đối tượng JSON:

Giải mã JSON:

Chuyên giải mã đối tượng JSON:

Cách sử dụng cơ bản

json.dump (obj, fp, *, skipKeys = false, đảm bảo_ascii = true, kiểm tra_circular = true ¶dump(obj, fp, *, skipkeys=False, ensure_ascii=True, check_circular=True, allow_nan=True, cls=None, indent=None, separators=None, default=None, sort_keys=False, **kw)

Nối tiếp obj thành một luồng được định dạng JSON thành FP (một đối tượng giống như tệp ____ ____ 28 được hỗ trợ) bằng cách sử dụng bảng chuyển đổi này.file-like object) using this conversion table.

Nếu SkipKeys là đúng (mặc định:

>>> import json
>>> json.dumps(['foo', {'bar': ('baz', None, 1.0, 2)}])
'["foo", {"bar": ["baz", null, 1.0, 2]}]'
>>> print(json.dumps("\"foo\bar"))
"\"foo\bar"
>>> print(json.dumps('\u1234'))
"\u1234"
>>> print(json.dumps('\\'))
"\\"
>>> print(json.dumps({"c": 0, "b": 0, "a": 0}, sort_keys=True))
{"a": 0, "b": 0, "c": 0}
>>> from io import StringIO
>>> io = StringIO()
>>> json.dump(['streaming API'], io)
>>> io.getvalue()
'["streaming API"]'
9), thì các khóa Dict không thuộc loại cơ bản (
>>> import json
>>> json.dumps([1, 2, 3, {'4': 5, '6': 7}], separators=(',', ':'))
'[1,2,3,{"4":5,"6":7}]'
0,
>>> import json
>>> json.dumps([1, 2, 3, {'4': 5, '6': 7}], separators=(',', ':'))
'[1,2,3,{"4":5,"6":7}]'
1,
>>> import json
>>> json.dumps([1, 2, 3, {'4': 5, '6': 7}], separators=(',', ':'))
'[1,2,3,{"4":5,"6":7}]'
2,
>>> import json
>>> json.dumps([1, 2, 3, {'4': 5, '6': 7}], separators=(',', ':'))
'[1,2,3,{"4":5,"6":7}]'
3,
>>> import json
>>> json.dumps([1, 2, 3, {'4': 5, '6': 7}], separators=(',', ':'))
'[1,2,3,{"4":5,"6":7}]'
4) sẽ bị bỏ qua thay vì tăng
>>> import json
>>> json.dumps([1, 2, 3, {'4': 5, '6': 7}], separators=(',', ':'))
'[1,2,3,{"4":5,"6":7}]'
5.

Mô -đun

>>> import json
>>> json.dumps(['foo', {'bar': ('baz', None, 1.0, 2)}])
'["foo", {"bar": ["baz", null, 1.0, 2]}]'
>>> print(json.dumps("\"foo\bar"))
"\"foo\bar"
>>> print(json.dumps('\u1234'))
"\u1234"
>>> print(json.dumps('\\'))
"\\"
>>> print(json.dumps({"c": 0, "b": 0, "a": 0}, sort_keys=True))
{"a": 0, "b": 0, "c": 0}
>>> from io import StringIO
>>> io = StringIO()
>>> json.dump(['streaming API'], io)
>>> io.getvalue()
'["streaming API"]'
3 luôn tạo các đối tượng
>>> import json
>>> json.dumps([1, 2, 3, {'4': 5, '6': 7}], separators=(',', ':'))
'[1,2,3,{"4":5,"6":7}]'
0, không phải đối tượng
>>> import json
>>> json.dumps([1, 2, 3, {'4': 5, '6': 7}], separators=(',', ':'))
'[1,2,3,{"4":5,"6":7}]'
8. Do đó,
>>> import json
>>> json.dumps([1, 2, 3, {'4': 5, '6': 7}], separators=(',', ':'))
'[1,2,3,{"4":5,"6":7}]'
9 phải hỗ trợ đầu vào
>>> import json
>>> json.dumps([1, 2, 3, {'4': 5, '6': 7}], separators=(',', ':'))
'[1,2,3,{"4":5,"6":7}]'
0.

Nếu đảm bảo_ascii là đúng (mặc định), đầu ra được đảm bảo sẽ có tất cả các ký tự không phải ASCII đến thoát. Nếu đảm bảo_ascii là sai, các ký tự này sẽ được xuất ra.

Nếu Check_Circular là sai (mặc định:

>>> import json
>>> print(json.dumps({'4': 5, '6': 7}, sort_keys=True, indent=4))
{
    "4": 5,
    "6": 7
}
1), thì kiểm tra tham chiếu tròn cho các loại container sẽ bị bỏ qua và tham chiếu tròn sẽ dẫn đến
>>> import json
>>> print(json.dumps({'4': 5, '6': 7}, sort_keys=True, indent=4))
{
    "4": 5,
    "6": 7
}
2 (hoặc tệ hơn).

Nếu allow_nan là sai (mặc định:

>>> import json
>>> print(json.dumps({'4': 5, '6': 7}, sort_keys=True, indent=4))
{
    "4": 5,
    "6": 7
}
1), thì đó sẽ là một
>>> import json
>>> print(json.dumps({'4': 5, '6': 7}, sort_keys=True, indent=4))
{
    "4": 5,
    "6": 7
}
4 để tuần tự hóa ra khỏi phạm vi
>>> import json
>>> json.dumps([1, 2, 3, {'4': 5, '6': 7}], separators=(',', ':'))
'[1,2,3,{"4":5,"6":7}]'
2 giá trị (
>>> import json
>>> print(json.dumps({'4': 5, '6': 7}, sort_keys=True, indent=4))
{
    "4": 5,
    "6": 7
}
6,
>>> import json
>>> print(json.dumps({'4': 5, '6': 7}, sort_keys=True, indent=4))
{
    "4": 5,
    "6": 7
}
7,
>>> import json
>>> print(json.dumps({'4': 5, '6': 7}, sort_keys=True, indent=4))
{
    "4": 5,
    "6": 7
}
8) trong việc tuân thủ nghiêm ngặt thông số kỹ thuật của JSON. Nếu allow_nan là đúng, các tương đương JavaScript của chúng (
>>> import json
>>> print(json.dumps({'4': 5, '6': 7}, sort_keys=True, indent=4))
{
    "4": 5,
    "6": 7
}
9,
>>> import json
>>> json.loads('["foo", {"bar":["baz", null, 1.0, 2]}]')
['foo', {'bar': ['baz', None, 1.0, 2]}]
>>> json.loads('"\\"foo\\bar"')
'"foo\x08ar'
>>> from io import StringIO
>>> io = StringIO('["streaming API"]')
>>> json.load(io)
['streaming API']
0,
>>> import json
>>> json.loads('["foo", {"bar":["baz", null, 1.0, 2]}]')
['foo', {'bar': ['baz', None, 1.0, 2]}]
>>> json.loads('"\\"foo\\bar"')
'"foo\x08ar'
>>> from io import StringIO
>>> io = StringIO('["streaming API"]')
>>> json.load(io)
['streaming API']
1) sẽ được sử dụng.

Nếu thụt lề là một số nguyên hoặc chuỗi không âm, thì các phần tử mảng JSON và các thành viên đối tượng sẽ được in khá đẹp với mức thụt lề đó. Một mức thụt vào 0, âm hoặc

>>> import json
>>> json.loads('["foo", {"bar":["baz", null, 1.0, 2]}]')
['foo', {'bar': ['baz', None, 1.0, 2]}]
>>> json.loads('"\\"foo\\bar"')
'"foo\x08ar'
>>> from io import StringIO
>>> io = StringIO('["streaming API"]')
>>> json.load(io)
['streaming API']
2 sẽ chỉ chèn các dòng mới.
>>> import json
>>> json.dumps([1, 2, 3, {'4': 5, '6': 7}], separators=(',', ':'))
'[1,2,3,{"4":5,"6":7}]'
4 (mặc định) chọn biểu diễn nhỏ gọn nhất. Sử dụng một số nguyên dương tích cực chỉ ra rằng nhiều không gian trên mỗi cấp độ. Nếu thụt lề là một chuỗi (chẳng hạn như
>>> import json
>>> json.loads('["foo", {"bar":["baz", null, 1.0, 2]}]')
['foo', {'bar': ['baz', None, 1.0, 2]}]
>>> json.loads('"\\"foo\\bar"')
'"foo\x08ar'
>>> from io import StringIO
>>> io = StringIO('["streaming API"]')
>>> json.load(io)
['streaming API']
4), chuỗi đó được sử dụng để thụt vào mỗi cấp độ.

Đã thay đổi trong phiên bản 3.2: Cho phép các chuỗi cho thụt lề ngoài số nguyên.Allow strings for indent in addition to integers.

Nếu được chỉ định, dấu phân cách phải là một bộ

>>> import json
>>> json.loads('["foo", {"bar":["baz", null, 1.0, 2]}]')
['foo', {'bar': ['baz', None, 1.0, 2]}]
>>> json.loads('"\\"foo\\bar"')
'"foo\x08ar'
>>> from io import StringIO
>>> io = StringIO('["streaming API"]')
>>> json.load(io)
['streaming API']
5. Mặc định là
>>> import json
>>> json.loads('["foo", {"bar":["baz", null, 1.0, 2]}]')
['foo', {'bar': ['baz', None, 1.0, 2]}]
>>> json.loads('"\\"foo\\bar"')
'"foo\x08ar'
>>> from io import StringIO
>>> io = StringIO('["streaming API"]')
>>> json.load(io)
['streaming API']
6 nếu thụt lề là
>>> import json
>>> json.dumps([1, 2, 3, {'4': 5, '6': 7}], separators=(',', ':'))
'[1,2,3,{"4":5,"6":7}]'
4 và
>>> import json
>>> json.loads('["foo", {"bar":["baz", null, 1.0, 2]}]')
['foo', {'bar': ['baz', None, 1.0, 2]}]
>>> json.loads('"\\"foo\\bar"')
'"foo\x08ar'
>>> from io import StringIO
>>> io = StringIO('["streaming API"]')
>>> json.load(io)
['streaming API']
8 nếu không. Để có được biểu diễn JSON nhỏ gọn nhất, bạn nên chỉ định
>>> import json
>>> json.loads('["foo", {"bar":["baz", null, 1.0, 2]}]')
['foo', {'bar': ['baz', None, 1.0, 2]}]
>>> json.loads('"\\"foo\\bar"')
'"foo\x08ar'
>>> from io import StringIO
>>> io = StringIO('["streaming API"]')
>>> json.load(io)
['streaming API']
9 để loại bỏ khoảng trắng.

Đã thay đổi trong phiên bản 3.4: Sử dụng

>>> import json
>>> json.loads('["foo", {"bar":["baz", null, 1.0, 2]}]')
['foo', {'bar': ['baz', None, 1.0, 2]}]
>>> json.loads('"\\"foo\\bar"')
'"foo\x08ar'
>>> from io import StringIO
>>> io = StringIO('["streaming API"]')
>>> json.load(io)
['streaming API']
8 làm mặc định nếu thụt lề không phải là
>>> import json
>>> json.dumps([1, 2, 3, {'4': 5, '6': 7}], separators=(',', ':'))
'[1,2,3,{"4":5,"6":7}]'
4.Use
>>> import json
>>> json.loads('["foo", {"bar":["baz", null, 1.0, 2]}]')
['foo', {'bar': ['baz', None, 1.0, 2]}]
>>> json.loads('"\\"foo\\bar"')
'"foo\x08ar'
>>> from io import StringIO
>>> io = StringIO('["streaming API"]')
>>> json.load(io)
['streaming API']
8 as default if indent is not
>>> import json
>>> json.dumps([1, 2, 3, {'4': 5, '6': 7}], separators=(',', ':'))
'[1,2,3,{"4":5,"6":7}]'
4.

Nếu được chỉ định, mặc định phải là một hàm được gọi cho các đối tượng có thể được tuần tự hóa. Nó sẽ trả về một phiên bản có thể mã hóa JSON của đối tượng hoặc tăng

>>> import json
>>> json.dumps([1, 2, 3, {'4': 5, '6': 7}], separators=(',', ':'))
'[1,2,3,{"4":5,"6":7}]'
5. Nếu không được chỉ định,
>>> import json
>>> json.dumps([1, 2, 3, {'4': 5, '6': 7}], separators=(',', ':'))
'[1,2,3,{"4":5,"6":7}]'
5 được nâng lên.

Nếu sort_keys là đúng (mặc định:

>>> import json
>>> json.dumps(['foo', {'bar': ('baz', None, 1.0, 2)}])
'["foo", {"bar": ["baz", null, 1.0, 2]}]'
>>> print(json.dumps("\"foo\bar"))
"\"foo\bar"
>>> print(json.dumps('\u1234'))
"\u1234"
>>> print(json.dumps('\\'))
"\\"
>>> print(json.dumps({"c": 0, "b": 0, "a": 0}, sort_keys=True))
{"a": 0, "b": 0, "c": 0}
>>> from io import StringIO
>>> io = StringIO()
>>> json.dump(['streaming API'], io)
>>> io.getvalue()
'["streaming API"]'
9), thì đầu ra của từ điển sẽ được sắp xếp theo khóa.

Để sử dụng một lớp con tùy chỉnh ____26 (ví dụ: một lớp ghi đè phương thức

>>> import json
>>> def as_complex(dct):
...     if '__complex__' in dct:
...         return complex(dct['real'], dct['imag'])
...     return dct
...
>>> json.loads('{"__complex__": true, "real": 1, "imag": 2}',
...     object_hook=as_complex)
(1+2j)
>>> import decimal
>>> json.loads('1.1', parse_float=decimal.Decimal)
Decimal('1.1')
6 để tuần tự hóa các loại bổ sung), chỉ định nó với CLS KWARG; nếu không
>>> import json
>>> json.dumps(['foo', {'bar': ('baz', None, 1.0, 2)}])
'["foo", {"bar": ["baz", null, 1.0, 2]}]'
>>> print(json.dumps("\"foo\bar"))
"\"foo\bar"
>>> print(json.dumps('\u1234'))
"\u1234"
>>> print(json.dumps('\\'))
"\\"
>>> print(json.dumps({"c": 0, "b": 0, "a": 0}, sort_keys=True))
{"a": 0, "b": 0, "c": 0}
>>> from io import StringIO
>>> io = StringIO()
>>> json.dump(['streaming API'], io)
>>> io.getvalue()
'["streaming API"]'
6 được sử dụng.

Đã thay đổi trong phiên bản 3.6: Tất cả các tham số tùy chọn hiện chỉ có từ khóa.All optional parameters are now keyword-only.

Ghi chú

Không giống như

>>> import json
>>> json.dumps(['foo', {'bar': ('baz', None, 1.0, 2)}])
'["foo", {"bar": ["baz", null, 1.0, 2]}]'
>>> print(json.dumps("\"foo\bar"))
"\"foo\bar"
>>> print(json.dumps('\u1234'))
"\u1234"
>>> print(json.dumps('\\'))
"\\"
>>> print(json.dumps({"c": 0, "b": 0, "a": 0}, sort_keys=True))
{"a": 0, "b": 0, "c": 0}
>>> from io import StringIO
>>> io = StringIO()
>>> json.dump(['streaming API'], io)
>>> io.getvalue()
'["streaming API"]'
5 và
>>> import json
>>> json.dumps(['foo', {'bar': ('baz', None, 1.0, 2)}])
'["foo", {"bar": ["baz", null, 1.0, 2]}]'
>>> print(json.dumps("\"foo\bar"))
"\"foo\bar"
>>> print(json.dumps('\u1234'))
"\u1234"
>>> print(json.dumps('\\'))
"\\"
>>> print(json.dumps({"c": 0, "b": 0, "a": 0}, sort_keys=True))
{"a": 0, "b": 0, "c": 0}
>>> from io import StringIO
>>> io = StringIO()
>>> json.dump(['streaming API'], io)
>>> io.getvalue()
'["streaming API"]'
4, JSON không phải là một giao thức đóng khung, vì vậy cố gắng tuần tự hóa nhiều đối tượng với các cuộc gọi lặp lại đến
>>> import json
>>> class ComplexEncoder(json.JSONEncoder):
...     def default(self, obj):
...         if isinstance(obj, complex):
...             return [obj.real, obj.imag]
...         # Let the base class default method raise the TypeError
...         return json.JSONEncoder.default(self, obj)
...
>>> json.dumps(2 + 1j, cls=ComplexEncoder)
'[2.0, 1.0]'
>>> ComplexEncoder().encode(2 + 1j)
'[2.0, 1.0]'
>>> list(ComplexEncoder().iterencode(2 + 1j))
['[2.0', ', 1.0', ']']
0 bằng cách sử dụng cùng một FP sẽ dẫn đến một tệp JSON không hợp lệ.

json.dumps (obj, *, skipKeys = false, đảm bảo_ascii = true, check_circular = truedumps(obj, *, skipkeys=False, ensure_ascii=True, check_circular=True, allow_nan=True, cls=None, indent=None, separators=None, default=None, sort_keys=False, **kw)

Nối tiếp obj thành một JSON được định dạng

>>> import json
>>> json.dumps([1, 2, 3, {'4': 5, '6': 7}], separators=(',', ':'))
'[1,2,3,{"4":5,"6":7}]'
0 bằng cách sử dụng bảng chuyển đổi này. Các đối số có ý nghĩa tương tự như trong
>>> import json
>>> class ComplexEncoder(json.JSONEncoder):
...     def default(self, obj):
...         if isinstance(obj, complex):
...             return [obj.real, obj.imag]
...         # Let the base class default method raise the TypeError
...         return json.JSONEncoder.default(self, obj)
...
>>> json.dumps(2 + 1j, cls=ComplexEncoder)
'[2.0, 1.0]'
>>> ComplexEncoder().encode(2 + 1j)
'[2.0, 1.0]'
>>> list(ComplexEncoder().iterencode(2 + 1j))
['[2.0', ', 1.0', ']']
0.conversion table. The arguments have the same meaning as in
>>> import json
>>> class ComplexEncoder(json.JSONEncoder):
...     def default(self, obj):
...         if isinstance(obj, complex):
...             return [obj.real, obj.imag]
...         # Let the base class default method raise the TypeError
...         return json.JSONEncoder.default(self, obj)
...
>>> json.dumps(2 + 1j, cls=ComplexEncoder)
'[2.0, 1.0]'
>>> ComplexEncoder().encode(2 + 1j)
'[2.0, 1.0]'
>>> list(ComplexEncoder().iterencode(2 + 1j))
['[2.0', ', 1.0', ']']
0.

Ghi chú

Không giống như

>>> import json
>>> json.dumps(['foo', {'bar': ('baz', None, 1.0, 2)}])
'["foo", {"bar": ["baz", null, 1.0, 2]}]'
>>> print(json.dumps("\"foo\bar"))
"\"foo\bar"
>>> print(json.dumps('\u1234'))
"\u1234"
>>> print(json.dumps('\\'))
"\\"
>>> print(json.dumps({"c": 0, "b": 0, "a": 0}, sort_keys=True))
{"a": 0, "b": 0, "c": 0}
>>> from io import StringIO
>>> io = StringIO()
>>> json.dump(['streaming API'], io)
>>> io.getvalue()
'["streaming API"]'
5 và
>>> import json
>>> json.dumps(['foo', {'bar': ('baz', None, 1.0, 2)}])
'["foo", {"bar": ["baz", null, 1.0, 2]}]'
>>> print(json.dumps("\"foo\bar"))
"\"foo\bar"
>>> print(json.dumps('\u1234'))
"\u1234"
>>> print(json.dumps('\\'))
"\\"
>>> print(json.dumps({"c": 0, "b": 0, "a": 0}, sort_keys=True))
{"a": 0, "b": 0, "c": 0}
>>> from io import StringIO
>>> io = StringIO()
>>> json.dump(['streaming API'], io)
>>> io.getvalue()
'["streaming API"]'
4, JSON không phải là một giao thức đóng khung, vì vậy cố gắng tuần tự hóa nhiều đối tượng với các cuộc gọi lặp lại đến
>>> import json
>>> class ComplexEncoder(json.JSONEncoder):
...     def default(self, obj):
...         if isinstance(obj, complex):
...             return [obj.real, obj.imag]
...         # Let the base class default method raise the TypeError
...         return json.JSONEncoder.default(self, obj)
...
>>> json.dumps(2 + 1j, cls=ComplexEncoder)
'[2.0, 1.0]'
>>> ComplexEncoder().encode(2 + 1j)
'[2.0, 1.0]'
>>> list(ComplexEncoder().iterencode(2 + 1j))
['[2.0', ', 1.0', ']']
0 bằng cách sử dụng cùng một FP sẽ dẫn đến một tệp JSON không hợp lệ.

json.dumps (obj, *, skipKeys = false, đảm bảo_ascii = true, check_circular = trueload(fp, *, cls=None, object_hook=None, parse_float=None, parse_int=None, parse_constant=None, object_pairs_hook=None, **kw)

Nối tiếp obj thành một JSON được định dạng

>>> import json
>>> json.dumps([1, 2, 3, {'4': 5, '6': 7}], separators=(',', ':'))
'[1,2,3,{"4":5,"6":7}]'
0 bằng cách sử dụng bảng chuyển đổi này. Các đối số có ý nghĩa tương tự như trong
>>> import json
>>> class ComplexEncoder(json.JSONEncoder):
...     def default(self, obj):
...         if isinstance(obj, complex):
...             return [obj.real, obj.imag]
...         # Let the base class default method raise the TypeError
...         return json.JSONEncoder.default(self, obj)
...
>>> json.dumps(2 + 1j, cls=ComplexEncoder)
'[2.0, 1.0]'
>>> ComplexEncoder().encode(2 + 1j)
'[2.0, 1.0]'
>>> list(ComplexEncoder().iterencode(2 + 1j))
['[2.0', ', 1.0', ']']
0.text file or binary file containing a JSON document) to a Python object using this conversion table.

Các khóa trong các cặp khóa/giá trị của JSON luôn thuộc loại

>>> import json
>>> json.dumps([1, 2, 3, {'4': 5, '6': 7}], separators=(',', ':'))
'[1,2,3,{"4":5,"6":7}]'
0. Khi một từ điển được chuyển đổi thành JSON, tất cả các khóa của từ điển đều bị ép buộc thành các chuỗi. Kết quả của điều này, nếu một từ điển được chuyển đổi thành JSON và sau đó trở lại từ điển, từ điển có thể không bằng từ gốc. Đó là,
>>> import json
>>> class ComplexEncoder(json.JSONEncoder):
...     def default(self, obj):
...         if isinstance(obj, complex):
...             return [obj.real, obj.imag]
...         # Let the base class default method raise the TypeError
...         return json.JSONEncoder.default(self, obj)
...
>>> json.dumps(2 + 1j, cls=ComplexEncoder)
'[2.0, 1.0]'
>>> ComplexEncoder().encode(2 + 1j)
'[2.0, 1.0]'
>>> list(ComplexEncoder().iterencode(2 + 1j))
['[2.0', ', 1.0', ']']
4 nếu X có các phím không chuỗi.

json.load (fp, *, cls = none, object_hook = none, parse_float = none, parse_int = none, parse_constant = none, object_pairs_hook = none, ** kw) ¶

Deserialize FP (tệp văn bản hoặc tệp nhị phân hỗ trợ ____ 75 có chứa tài liệu JSON) đến đối tượng Python bằng cách sử dụng bảng chuyển đổi này.Added support for object_pairs_hook.

Object_hook là một hàm tùy chọn sẽ được gọi với kết quả của bất kỳ đối tượng nào được giải mã theo nghĩa đen (A

>>> import json
>>> class ComplexEncoder(json.JSONEncoder):
...     def default(self, obj):
...         if isinstance(obj, complex):
...             return [obj.real, obj.imag]
...         # Let the base class default method raise the TypeError
...         return json.JSONEncoder.default(self, obj)
...
>>> json.dumps(2 + 1j, cls=ComplexEncoder)
'[2.0, 1.0]'
>>> ComplexEncoder().encode(2 + 1j)
'[2.0, 1.0]'
>>> list(ComplexEncoder().iterencode(2 + 1j))
['[2.0', ', 1.0', ']']
6). Giá trị trả về của Object_hook sẽ được sử dụng thay vì
>>> import json
>>> class ComplexEncoder(json.JSONEncoder):
...     def default(self, obj):
...         if isinstance(obj, complex):
...             return [obj.real, obj.imag]
...         # Let the base class default method raise the TypeError
...         return json.JSONEncoder.default(self, obj)
...
>>> json.dumps(2 + 1j, cls=ComplexEncoder)
'[2.0, 1.0]'
>>> ComplexEncoder().encode(2 + 1j)
'[2.0, 1.0]'
>>> list(ComplexEncoder().iterencode(2 + 1j))
['[2.0', ', 1.0', ']']
6. Tính năng này có thể được sử dụng để triển khai bộ giải mã tùy chỉnh (ví dụ: gợi ý lớp JSON-RPC).

Parse_int, nếu được chỉ định, sẽ được gọi với chuỗi của mỗi JSON int sẽ được giải mã. Theo mặc định, điều này tương đương với

$ echo '{"json":"obj"}' | python -m json.tool
{
    "json": "obj"
}
$ echo '{1.2:3.4}' | python -m json.tool
Expecting property name enclosed in double quotes: line 1 column 2 (char 1)
1. Điều này có thể được sử dụng để sử dụng một kiểu dữ liệu hoặc trình phân tích cú pháp khác cho số nguyên JSON (ví dụ:
>>> import json
>>> json.dumps([1, 2, 3, {'4': 5, '6': 7}], separators=(',', ':'))
'[1,2,3,{"4":5,"6":7}]'
2).

Đã thay đổi trong phiên bản 3.11: Parse_int mặc định của

$ echo '{"json":"obj"}' | python -m json.tool
{
    "json": "obj"
}
$ echo '{1.2:3.4}' | python -m json.tool
Expecting property name enclosed in double quotes: line 1 column 2 (char 1)
3 Bây giờ giới hạn độ dài tối đa của chuỗi số nguyên thông qua giới hạn độ dài chuyển đổi chuỗi số nguyên của trình thông dịch để giúp tránh từ chối các cuộc tấn công dịch vụ.The default parse_int of
$ echo '{"json":"obj"}' | python -m json.tool
{
    "json": "obj"
}
$ echo '{1.2:3.4}' | python -m json.tool
Expecting property name enclosed in double quotes: line 1 column 2 (char 1)
3 now limits the maximum length of the integer string via the interpreter’s integer string conversion length limitation to help avoid denial of service attacks.

parse_constant, nếu được chỉ định, sẽ được gọi với một trong các chuỗi sau:

$ echo '{"json":"obj"}' | python -m json.tool
{
    "json": "obj"
}
$ echo '{1.2:3.4}' | python -m json.tool
Expecting property name enclosed in double quotes: line 1 column 2 (char 1)
4,
$ echo '{"json":"obj"}' | python -m json.tool
{
    "json": "obj"
}
$ echo '{1.2:3.4}' | python -m json.tool
Expecting property name enclosed in double quotes: line 1 column 2 (char 1)
5,
$ echo '{"json":"obj"}' | python -m json.tool
{
    "json": "obj"
}
$ echo '{1.2:3.4}' | python -m json.tool
Expecting property name enclosed in double quotes: line 1 column 2 (char 1)
6. Điều này có thể được sử dụng để tăng một ngoại lệ nếu gặp số JSON không hợp lệ.

Đã thay đổi trong phiên bản 3.1: parse_constant không được gọi trên ‘null,‘ true, ’sai nữa.parse_constant doesn’t get called on ‘null’, ‘true’, ‘false’ anymore.

Để sử dụng lớp con tùy chỉnh ____87, chỉ định nó với

$ echo '{"json":"obj"}' | python -m json.tool
{
    "json": "obj"
}
$ echo '{1.2:3.4}' | python -m json.tool
Expecting property name enclosed in double quotes: line 1 column 2 (char 1)
8 kwarg; Nếu không
$ echo '{"json":"obj"}' | python -m json.tool
{
    "json": "obj"
}
$ echo '{1.2:3.4}' | python -m json.tool
Expecting property name enclosed in double quotes: line 1 column 2 (char 1)
7 được sử dụng. Các đối số từ khóa bổ sung sẽ được chuyển cho hàm tạo của lớp.

Nếu dữ liệu được khử trùng không phải là một tài liệu JSON hợp lệ, một

def default(self, o):
   try:
       iterable = iter(o)
   except TypeError:
       pass
   else:
       return list(iterable)
   # Let the base class default method raise the TypeError
   return json.JSONEncoder.default(self, o)
0 sẽ được nêu ra.

Đã thay đổi trong phiên bản 3.6: Tất cả các tham số tùy chọn hiện chỉ có từ khóa.All optional parameters are now keyword-only.

Đã thay đổi trong phiên bản 3.6: FP hiện có thể là một tệp nhị phân. Mã hóa đầu vào phải là UTF-8, UTF-16 hoặc UTF-32.fp can now be a binary file. The input encoding should be UTF-8, UTF-16 or UTF-32.

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

Deserialize S (A

>>> import json
>>> json.dumps([1, 2, 3, {'4': 5, '6': 7}], separators=(',', ':'))
'[1,2,3,{"4":5,"6":7}]'
0,
>>> import json
>>> json.dumps([1, 2, 3, {'4': 5, '6': 7}], separators=(',', ':'))
'[1,2,3,{"4":5,"6":7}]'
8 hoặc
def default(self, o):
   try:
       iterable = iter(o)
   except TypeError:
       pass
   else:
       return list(iterable)
   # Let the base class default method raise the TypeError
   return json.JSONEncoder.default(self, o)
3 có chứa tài liệu JSON) đến đối tượng Python bằng cách sử dụng bảng chuyển đổi này.conversion table.

Các đối số khác có ý nghĩa tương tự như trong

def default(self, o):
   try:
       iterable = iter(o)
   except TypeError:
       pass
   else:
       return list(iterable)
   # Let the base class default method raise the TypeError
   return json.JSONEncoder.default(self, o)
4.

Nếu dữ liệu được khử trùng không phải là một tài liệu JSON hợp lệ, một

def default(self, o):
   try:
       iterable = iter(o)
   except TypeError:
       pass
   else:
       return list(iterable)
   # Let the base class default method raise the TypeError
   return json.JSONEncoder.default(self, o)
0 sẽ được nêu ra.

Đã thay đổi trong phiên bản 3.6: Tất cả các tham số tùy chọn hiện chỉ có từ khóa.s can now be of type

>>> import json
>>> json.dumps([1, 2, 3, {'4': 5, '6': 7}], separators=(',', ':'))
'[1,2,3,{"4":5,"6":7}]'
8 or
def default(self, o):
   try:
       iterable = iter(o)
   except TypeError:
       pass
   else:
       return list(iterable)
   # Let the base class default method raise the TypeError
   return json.JSONEncoder.default(self, o)
3. The input encoding should be UTF-8, UTF-16 or UTF-32.

Đã thay đổi trong phiên bản 3.6: FP hiện có thể là một tệp nhị phân. Mã hóa đầu vào phải là UTF-8, UTF-16 hoặc UTF-32.The keyword argument encoding has been removed.

json.loads (s, *, cls = none, object_hook = none, parse_float = none, parse_int = none, parse_constant = none

Deserialize S (A
>>> import json
>>> json.dumps([1, 2, 3, {'4': 5, '6': 7}], separators=(',', ':'))
'[1,2,3,{"4":5,"6":7}]'
0,
>>> import json
>>> json.dumps([1, 2, 3, {'4': 5, '6': 7}], separators=(',', ':'))
'[1,2,3,{"4":5,"6":7}]'
8 hoặc
def default(self, o):
   try:
       iterable = iter(o)
   except TypeError:
       pass
   else:
       return list(iterable)
   # Let the base class default method raise the TypeError
   return json.JSONEncoder.default(self, o)
3 có chứa tài liệu JSON) đến đối tượng Python bằng cách sử dụng bảng chuyển đổi này.
json.JSONDecoder(*, object_hook=None, parse_float=None, parse_int=None, parse_constant=None, strict=True, object_pairs_hook=None)

Các đối số khác có ý nghĩa tương tự như trong

def default(self, o):
   try:
       iterable = iter(o)
   except TypeError:
       pass
   else:
       return list(iterable)
   # Let the base class default method raise the TypeError
   return json.JSONEncoder.default(self, o)
4.

Đã thay đổi trong phiên bản 3.6: S bây giờ có thể thuộc loại

>>> import json
>>> json.dumps([1, 2, 3, {'4': 5, '6': 7}], separators=(',', ':'))
'[1,2,3,{"4":5,"6":7}]'
8 hoặc
def default(self, o):
   try:
       iterable = iter(o)
   except TypeError:
       pass
   else:
       return list(iterable)
   # Let the base class default method raise the TypeError
   return json.JSONEncoder.default(self, o)
3. Mã hóa đầu vào phải là UTF-8, UTF-16 hoặc UTF-32.

Thay đổi trong phiên bản 3.9: Mã hóa đối số từ khóa đã bị xóa.

Bộ mã hóa và bộ giải mã

classjson.jsondecoder (*, object_hook = none, parse_float = none, parse_int = none, parse_constant = none, strict = true

Bộ giải mã JSON đơn giản.

Thực hiện các bản dịch sau trong giải mã theo mặc định:

Json

Python

sự vật

DIGN

int

mảng

float

true

danh sách

false

sợi dây

null

str

Số (int)

số (thực)

ĐÚNG VẬY

SaiAdded support for object_pairs_hook.

Không có

Parse_int, nếu được chỉ định, sẽ được gọi với chuỗi của mỗi JSON int sẽ được giải mã. Theo mặc định, điều này tương đương với

$ echo '{"json":"obj"}' | python -m json.tool
{
    "json": "obj"
}
$ echo '{1.2:3.4}' | python -m json.tool
Expecting property name enclosed in double quotes: line 1 column 2 (char 1)
1. Điều này có thể được sử dụng để sử dụng một kiểu dữ liệu hoặc trình phân tích cú pháp khác cho số nguyên JSON (ví dụ:
>>> import json
>>> json.dumps([1, 2, 3, {'4': 5, '6': 7}], separators=(',', ':'))
'[1,2,3,{"4":5,"6":7}]'
2).

parse_constant, nếu được chỉ định, sẽ được gọi với một trong các chuỗi sau:

$ echo '{"json":"obj"}' | python -m json.tool
{
    "json": "obj"
}
$ echo '{1.2:3.4}' | python -m json.tool
Expecting property name enclosed in double quotes: line 1 column 2 (char 1)
4,
$ echo '{"json":"obj"}' | python -m json.tool
{
    "json": "obj"
}
$ echo '{1.2:3.4}' | python -m json.tool
Expecting property name enclosed in double quotes: line 1 column 2 (char 1)
5,
$ echo '{"json":"obj"}' | python -m json.tool
{
    "json": "obj"
}
$ echo '{1.2:3.4}' | python -m json.tool
Expecting property name enclosed in double quotes: line 1 column 2 (char 1)
6. Điều này có thể được sử dụng để tăng một ngoại lệ nếu gặp số JSON không hợp lệ.

Nó cũng hiểu

>>> import json
>>> print(json.dumps({'4': 5, '6': 7}, sort_keys=True, indent=4))
{
    "4": 5,
    "6": 7
}
9,
>>> import json
>>> json.loads('["foo", {"bar":["baz", null, 1.0, 2]}]')
['foo', {'bar': ['baz', None, 1.0, 2]}]
>>> json.loads('"\\"foo\\bar"')
'"foo\x08ar'
>>> from io import StringIO
>>> io = StringIO('["streaming API"]')
>>> json.load(io)
['streaming API']
0 và
>>> import json
>>> json.loads('["foo", {"bar":["baz", null, 1.0, 2]}]')
['foo', {'bar': ['baz', None, 1.0, 2]}]
>>> json.loads('"\\"foo\\bar"')
'"foo\x08ar'
>>> from io import StringIO
>>> io = StringIO('["streaming API"]')
>>> json.load(io)
['streaming API']
1 là các giá trị
>>> import json
>>> json.dumps([1, 2, 3, {'4': 5, '6': 7}], separators=(',', ':'))
'[1,2,3,{"4":5,"6":7}]'
2 tương ứng của chúng, nằm ngoài thông số kỹ thuật JSON.

Nếu dữ liệu được khử trùng không phải là một tài liệu JSON hợp lệ, một

def default(self, o):
   try:
       iterable = iter(o)
   except TypeError:
       pass
   else:
       return list(iterable)
   # Let the base class default method raise the TypeError
   return json.JSONEncoder.default(self, o)
0 sẽ được nêu ra.

Đã thay đổi trong phiên bản 3.6: Tất cả các tham số tùy chọn hiện chỉ có từ khóa.All parameters are now keyword-only.

Đã thay đổi trong phiên bản 3.6: FP hiện có thể là một tệp nhị phân. Mã hóa đầu vào phải là UTF-8, UTF-16 hoặc UTF-32.(s)

json.loads (s, *, cls = none, object_hook = none, parse_float = none, parse_int = none, parse_constant = none

Deserialize S (A

>>> import json
>>> json.dumps([1, 2, 3, {'4': 5, '6': 7}], separators=(',', ':'))
'[1,2,3,{"4":5,"6":7}]'
0,
>>> import json
>>> json.dumps([1, 2, 3, {'4': 5, '6': 7}], separators=(',', ':'))
'[1,2,3,{"4":5,"6":7}]'
8 hoặc
def default(self, o):
   try:
       iterable = iter(o)
   except TypeError:
       pass
   else:
       return list(iterable)
   # Let the base class default method raise the TypeError
   return json.JSONEncoder.default(self, o)
3 có chứa tài liệu JSON) đến đối tượng Python bằng cách sử dụng bảng chuyển đổi này.

Các đối số khác có ý nghĩa tương tự như trong
def default(self, o):
   try:
       iterable = iter(o)
   except TypeError:
       pass
   else:
       return list(iterable)
   # Let the base class default method raise the TypeError
   return json.JSONEncoder.default(self, o)
4.
(s)

Đã thay đổi trong phiên bản 3.6: S bây giờ có thể thuộc loại

>>> import json
>>> json.dumps([1, 2, 3, {'4': 5, '6': 7}], separators=(',', ':'))
'[1,2,3,{"4":5,"6":7}]'
8 hoặc
def default(self, o):
   try:
       iterable = iter(o)
   except TypeError:
       pass
   else:
       return list(iterable)
   # Let the base class default method raise the TypeError
   return json.JSONEncoder.default(self, o)
3. Mã hóa đầu vào phải là UTF-8, UTF-16 hoặc UTF-32.

Thay đổi trong phiên bản 3.9: Mã hóa đối số từ khóa đã bị xóa.

Bộ mã hóa và bộ giải mãjson.JSONEncoder(*, skipkeys=False, ensure_ascii=True, check_circular=True, allow_nan=True, sort_keys=False, indent=None, separators=None, default=None)

Bộ mã hóa JSON mở rộng cho các cấu trúc dữ liệu Python.

Hỗ trợ các đối tượng và loại sau theo mặc định:

Python

Json

DIGN

sự vật

Danh sách, tuple

mảng

str

sợi dây

int, float, int- & float có nguồn gốc từ

con số

ĐÚNG VẬY

true

Sai

false

Không có

null

Đã thay đổi trong phiên bản 3.4: Đã thêm hỗ trợ cho các lớp Enum có nguồn gốc từ INT và float.Added support for int- and float-derived Enum classes.

Để mở rộng điều này để nhận biết các đối tượng khác, lớp con và thực hiện phương thức

>>> import json
>>> def as_complex(dct):
...     if '__complex__' in dct:
...         return complex(dct['real'], dct['imag'])
...     return dct
...
>>> json.loads('{"__complex__": true, "real": 1, "imag": 2}',
...     object_hook=as_complex)
(1+2j)
>>> import decimal
>>> json.loads('1.1', parse_float=decimal.Decimal)
Decimal('1.1')
6 với một phương thức khác trả về một đối tượng có thể nối tiếp cho
>>> print json.dumps(x, ensure_ascii=False)
{"some_key": "Enviar invitación privada"}
21 nếu có thể, nếu không, nó nên gọi triển khai siêu lớp (để tăng
>>> import json
>>> json.dumps([1, 2, 3, {'4': 5, '6': 7}], separators=(',', ':'))
'[1,2,3,{"4":5,"6":7}]'
5).

Nếu SkipKeys là sai (mặc định),

>>> import json
>>> json.dumps([1, 2, 3, {'4': 5, '6': 7}], separators=(',', ':'))
'[1,2,3,{"4":5,"6":7}]'
5 sẽ được nâng lên khi cố gắng mã hóa các khóa không phải là
>>> import json
>>> json.dumps([1, 2, 3, {'4': 5, '6': 7}], separators=(',', ':'))
'[1,2,3,{"4":5,"6":7}]'
0,
>>> import json
>>> json.dumps([1, 2, 3, {'4': 5, '6': 7}], separators=(',', ':'))
'[1,2,3,{"4":5,"6":7}]'
1,
>>> import json
>>> json.dumps([1, 2, 3, {'4': 5, '6': 7}], separators=(',', ':'))
'[1,2,3,{"4":5,"6":7}]'
2 hoặc
>>> import json
>>> json.dumps([1, 2, 3, {'4': 5, '6': 7}], separators=(',', ':'))
'[1,2,3,{"4":5,"6":7}]'
4. Nếu SkipKeys là đúng, các mục như vậy chỉ đơn giản là bỏ qua.

Nếu đảm bảo_ascii là đúng (mặc định), đầu ra được đảm bảo sẽ có tất cả các ký tự không phải ASCII đến thoát. Nếu đảm bảo_ascii là sai, các ký tự này sẽ được xuất ra.

Nếu Check_Circular là đúng (mặc định), thì các danh sách, dicts và các đối tượng được mã hóa tùy chỉnh sẽ được kiểm tra các tham chiếu tròn trong quá trình mã hóa để ngăn chặn đệ quy vô hạn (sẽ gây ra

>>> import json
>>> print(json.dumps({'4': 5, '6': 7}, sort_keys=True, indent=4))
{
    "4": 5,
    "6": 7
}
2). Nếu không, không có kiểm tra như vậy diễn ra.

Nếu allow_nan là đúng (mặc định), thì

>>> import json
>>> print(json.dumps({'4': 5, '6': 7}, sort_keys=True, indent=4))
{
    "4": 5,
    "6": 7
}
9,
>>> import json
>>> json.loads('["foo", {"bar":["baz", null, 1.0, 2]}]')
['foo', {'bar': ['baz', None, 1.0, 2]}]
>>> json.loads('"\\"foo\\bar"')
'"foo\x08ar'
>>> from io import StringIO
>>> io = StringIO('["streaming API"]')
>>> json.load(io)
['streaming API']
0 và
>>> import json
>>> json.loads('["foo", {"bar":["baz", null, 1.0, 2]}]')
['foo', {'bar': ['baz', None, 1.0, 2]}]
>>> json.loads('"\\"foo\\bar"')
'"foo\x08ar'
>>> from io import StringIO
>>> io = StringIO('["streaming API"]')
>>> json.load(io)
['streaming API']
1 sẽ được mã hóa như vậy. Hành vi này không tuân thủ đặc tả JSON, nhưng phù hợp với hầu hết các bộ mã hóa và bộ giải mã dựa trên JavaScript. Nếu không, nó sẽ là một
>>> import json
>>> print(json.dumps({'4': 5, '6': 7}, sort_keys=True, indent=4))
{
    "4": 5,
    "6": 7
}
4 để mã hóa những chiếc phao như vậy.

Nếu sort_keys là đúng (mặc định:

>>> import json
>>> json.dumps(['foo', {'bar': ('baz', None, 1.0, 2)}])
'["foo", {"bar": ["baz", null, 1.0, 2]}]'
>>> print(json.dumps("\"foo\bar"))
"\"foo\bar"
>>> print(json.dumps('\u1234'))
"\u1234"
>>> print(json.dumps('\\'))
"\\"
>>> print(json.dumps({"c": 0, "b": 0, "a": 0}, sort_keys=True))
{"a": 0, "b": 0, "c": 0}
>>> from io import StringIO
>>> io = StringIO()
>>> json.dump(['streaming API'], io)
>>> io.getvalue()
'["streaming API"]'
9), thì đầu ra của từ điển sẽ được sắp xếp theo khóa; Điều này rất hữu ích cho các bài kiểm tra hồi quy để đảm bảo rằng các tuần tự JSON có thể được so sánh trên cơ sở hàng ngày.

Nếu thụt lề là một số nguyên hoặc chuỗi không âm, thì các phần tử mảng JSON và các thành viên đối tượng sẽ được in khá đẹp với mức thụt lề đó. Một mức thụt vào 0, âm hoặc

>>> import json
>>> json.loads('["foo", {"bar":["baz", null, 1.0, 2]}]')
['foo', {'bar': ['baz', None, 1.0, 2]}]
>>> json.loads('"\\"foo\\bar"')
'"foo\x08ar'
>>> from io import StringIO
>>> io = StringIO('["streaming API"]')
>>> json.load(io)
['streaming API']
2 sẽ chỉ chèn các dòng mới.
>>> import json
>>> json.dumps([1, 2, 3, {'4': 5, '6': 7}], separators=(',', ':'))
'[1,2,3,{"4":5,"6":7}]'
4 (mặc định) chọn biểu diễn nhỏ gọn nhất. Sử dụng một số nguyên dương tích cực chỉ ra rằng nhiều không gian trên mỗi cấp độ. Nếu thụt lề là một chuỗi (chẳng hạn như
>>> import json
>>> json.loads('["foo", {"bar":["baz", null, 1.0, 2]}]')
['foo', {'bar': ['baz', None, 1.0, 2]}]
>>> json.loads('"\\"foo\\bar"')
'"foo\x08ar'
>>> from io import StringIO
>>> io = StringIO('["streaming API"]')
>>> json.load(io)
['streaming API']
4), chuỗi đó được sử dụng để thụt vào mỗi cấp độ.

Đã thay đổi trong phiên bản 3.2: Cho phép các chuỗi cho thụt lề ngoài số nguyên.Allow strings for indent in addition to integers.

Nếu được chỉ định, dấu phân cách phải là một bộ

>>> import json
>>> json.loads('["foo", {"bar":["baz", null, 1.0, 2]}]')
['foo', {'bar': ['baz', None, 1.0, 2]}]
>>> json.loads('"\\"foo\\bar"')
'"foo\x08ar'
>>> from io import StringIO
>>> io = StringIO('["streaming API"]')
>>> json.load(io)
['streaming API']
5. Mặc định là
>>> import json
>>> json.loads('["foo", {"bar":["baz", null, 1.0, 2]}]')
['foo', {'bar': ['baz', None, 1.0, 2]}]
>>> json.loads('"\\"foo\\bar"')
'"foo\x08ar'
>>> from io import StringIO
>>> io = StringIO('["streaming API"]')
>>> json.load(io)
['streaming API']
6 nếu thụt lề là
>>> import json
>>> json.dumps([1, 2, 3, {'4': 5, '6': 7}], separators=(',', ':'))
'[1,2,3,{"4":5,"6":7}]'
4 và
>>> import json
>>> json.loads('["foo", {"bar":["baz", null, 1.0, 2]}]')
['foo', {'bar': ['baz', None, 1.0, 2]}]
>>> json.loads('"\\"foo\\bar"')
'"foo\x08ar'
>>> from io import StringIO
>>> io = StringIO('["streaming API"]')
>>> json.load(io)
['streaming API']
8 nếu không. Để có được biểu diễn JSON nhỏ gọn nhất, bạn nên chỉ định
>>> import json
>>> json.loads('["foo", {"bar":["baz", null, 1.0, 2]}]')
['foo', {'bar': ['baz', None, 1.0, 2]}]
>>> json.loads('"\\"foo\\bar"')
'"foo\x08ar'
>>> from io import StringIO
>>> io = StringIO('["streaming API"]')
>>> json.load(io)
['streaming API']
9 để loại bỏ khoảng trắng.

Đã thay đổi trong phiên bản 3.4: Sử dụng

>>> import json
>>> json.loads('["foo", {"bar":["baz", null, 1.0, 2]}]')
['foo', {'bar': ['baz', None, 1.0, 2]}]
>>> json.loads('"\\"foo\\bar"')
'"foo\x08ar'
>>> from io import StringIO
>>> io = StringIO('["streaming API"]')
>>> json.load(io)
['streaming API']
8 làm mặc định nếu thụt lề không phải là
>>> import json
>>> json.dumps([1, 2, 3, {'4': 5, '6': 7}], separators=(',', ':'))
'[1,2,3,{"4":5,"6":7}]'
4.Use
>>> import json
>>> json.loads('["foo", {"bar":["baz", null, 1.0, 2]}]')
['foo', {'bar': ['baz', None, 1.0, 2]}]
>>> json.loads('"\\"foo\\bar"')
'"foo\x08ar'
>>> from io import StringIO
>>> io = StringIO('["streaming API"]')
>>> json.load(io)
['streaming API']
8 as default if indent is not
>>> import json
>>> json.dumps([1, 2, 3, {'4': 5, '6': 7}], separators=(',', ':'))
'[1,2,3,{"4":5,"6":7}]'
4.

Nếu được chỉ định, mặc định phải là một hàm được gọi cho các đối tượng có thể được tuần tự hóa. Nó sẽ trả về một phiên bản có thể mã hóa JSON của đối tượng hoặc tăng

>>> import json
>>> json.dumps([1, 2, 3, {'4': 5, '6': 7}], separators=(',', ':'))
'[1,2,3,{"4":5,"6":7}]'
5. Nếu không được chỉ định,
>>> import json
>>> json.dumps([1, 2, 3, {'4': 5, '6': 7}], separators=(',', ':'))
'[1,2,3,{"4":5,"6":7}]'
5 được nâng lên.

Đã thay đổi trong phiên bản 3.6: Tất cả các tham số hiện chỉ có từ khóa.All parameters are now keyword-only.

mặc định (o) ¶(o)

Thực hiện phương pháp này trong một lớp con sao cho nó trả về một đối tượng có thể nối tiếp cho O hoặc gọi việc thực hiện cơ sở (để tăng

>>> import json
>>> json.dumps([1, 2, 3, {'4': 5, '6': 7}], separators=(',', ':'))
'[1,2,3,{"4":5,"6":7}]'
5).

Ví dụ: để hỗ trợ các trình lặp tùy ý, bạn có thể thực hiện

>>> import json
>>> def as_complex(dct):
...     if '__complex__' in dct:
...         return complex(dct['real'], dct['imag'])
...     return dct
...
>>> json.loads('{"__complex__": true, "real": 1, "imag": 2}',
...     object_hook=as_complex)
(1+2j)
>>> import decimal
>>> json.loads('1.1', parse_float=decimal.Decimal)
Decimal('1.1')
6 như thế này:

def default(self, o):
   try:
       iterable = iter(o)
   except TypeError:
       pass
   else:
       return list(iterable)
   # Let the base class default method raise the TypeError
   return json.JSONEncoder.default(self, o)

mã hóa (o)(o)

Trả về một biểu diễn chuỗi JSON của cấu trúc dữ liệu Python, o. Ví dụ:

>>> print json.dumps(x, ensure_ascii=False)
{"some_key": "Enviar invitación privada"}
0

iterencode (o) ¶(o)

Mã hóa đối tượng đã cho, O và mang lại từng biểu diễn chuỗi là có sẵn. Ví dụ:

>>> print json.dumps(x, ensure_ascii=False)
{"some_key": "Enviar invitación privada"}
1

Ngoại lệ ha

ExceptionJson.jSondecodeError (MSG, DOC, POS) ¶json.JSONDecodeError(msg, doc, pos)

Lớp con của

>>> import json
>>> print(json.dumps({'4': 5, '6': 7}, sort_keys=True, indent=4))
{
    "4": 5,
    "6": 7
}
4 với các thuộc tính bổ sung sau:

tin nhắn

Thông báo lỗi chưa được định dạng.

tài liệu

Tài liệu JSON được phân tích cú pháp.

vị của nước này

Chỉ số bắt đầu của tài liệu nơi phân tích cú pháp thất bại.

vải mỏng

Dòng tương ứng với POS.

một thứ lớn tiếng

Cột tương ứng với POS.

Mới trong phiên bản 3.5.

Tuân thủ tiêu chuẩn và khả năng tương tác

Định dạng JSON được chỉ định bởi RFC 7159 và ECMA-404. Phần này chi tiết mức độ tuân thủ mô -đun này với RFC. Để đơn giản, các lớp con

>>> import json
>>> json.dumps(['foo', {'bar': ('baz', None, 1.0, 2)}])
'["foo", {"bar": ["baz", null, 1.0, 2]}]'
>>> print(json.dumps("\"foo\bar"))
"\"foo\bar"
>>> print(json.dumps('\u1234'))
"\u1234"
>>> print(json.dumps('\\'))
"\\"
>>> print(json.dumps({"c": 0, "b": 0, "a": 0}, sort_keys=True))
{"a": 0, "b": 0, "c": 0}
>>> from io import StringIO
>>> io = StringIO()
>>> json.dump(['streaming API'], io)
>>> io.getvalue()
'["streaming API"]'
6 và
$ echo '{"json":"obj"}' | python -m json.tool
{
    "json": "obj"
}
$ echo '{1.2:3.4}' | python -m json.tool
Expecting property name enclosed in double quotes: line 1 column 2 (char 1)
7 và các tham số khác ngoài những phân loại được đề cập rõ ràng, không được xem xét.RFC 7159 and by ECMA-404. This section details this module’s level of compliance with the RFC. For simplicity,
>>> import json
>>> json.dumps(['foo', {'bar': ('baz', None, 1.0, 2)}])
'["foo", {"bar": ["baz", null, 1.0, 2]}]'
>>> print(json.dumps("\"foo\bar"))
"\"foo\bar"
>>> print(json.dumps('\u1234'))
"\u1234"
>>> print(json.dumps('\\'))
"\\"
>>> print(json.dumps({"c": 0, "b": 0, "a": 0}, sort_keys=True))
{"a": 0, "b": 0, "c": 0}
>>> from io import StringIO
>>> io = StringIO()
>>> json.dump(['streaming API'], io)
>>> io.getvalue()
'["streaming API"]'
6 and
$ echo '{"json":"obj"}' | python -m json.tool
{
    "json": "obj"
}
$ echo '{1.2:3.4}' | python -m json.tool
Expecting property name enclosed in double quotes: line 1 column 2 (char 1)
7 subclasses, and parameters other than those explicitly mentioned, are not considered.

Mô -đun này không tuân thủ RFC theo kiểu nghiêm ngặt, thực hiện một số tiện ích mở rộng là JavaScript hợp lệ nhưng không hợp lệ JSON. Đặc biệt:

  • Giá trị số vô hạn và NAN được chấp nhận và đầu ra;

  • Tên lặp lại trong một đối tượng được chấp nhận và chỉ có giá trị của cặp giá trị tên cuối cùng được sử dụng.

Do RFC cho phép trình phân tích cú pháp tuân thủ RFC chấp nhận các văn bản đầu vào không tuân thủ RFC, nên mô-đun này là trình phân hủy về mặt kỹ thuật tuân thủ RFC trong các cài đặt mặc định.

Mã hóa ký tự

RFC yêu cầu JSON phải được biểu diễn bằng UTF-8, UTF-16 hoặc UTF-32, với UTF-8 là mặc định được đề xuất cho khả năng tương tác tối đa.

Mặc dù không được phép, mặc dù không cần thiết, bởi RFC, bộ nối tiếp mô -đun này đặt đảm bảo_ascii = true theo mặc định, do đó thoát ra đầu ra để các chuỗi kết quả chỉ chứa các ký tự ASCII.

Khác với tham số đảm bảo_ascii, mô -đun này được xác định nghiêm ngặt về mặt chuyển đổi giữa các đối tượng Python và

>>> print json.dumps(x, ensure_ascii=False)
{"some_key": "Enviar invitación privada"}
51, và do đó không trực tiếp giải quyết vấn đề mã hóa ký tự.

RFC cấm thêm dấu lệnh byte (BOM) vào đầu văn bản JSON và bộ tuần tự mô -đun này không thêm BOM vào đầu ra của nó. RFC cho phép, nhưng không yêu cầu, JSON Deserializer phải bỏ qua một BOM ban đầu trong đầu vào của họ. Bộ khử loại mô -đun này tăng

>>> import json
>>> print(json.dumps({'4': 5, '6': 7}, sort_keys=True, indent=4))
{
    "4": 5,
    "6": 7
}
4 khi có BOM ban đầu.

RFC không cấm các chuỗi JSON có chứa các chuỗi byte không tương ứng với các ký tự unicode hợp lệ (ví dụ: người thay thế UTF-16 không ghép đôi), nhưng điều đó lưu ý rằng chúng có thể gây ra các vấn đề về khả năng tương tác. Theo mặc định, mô -đun này chấp nhận và đầu ra (khi có trong các điểm mã

>>> import json
>>> json.dumps([1, 2, 3, {'4': 5, '6': 7}], separators=(',', ':'))
'[1,2,3,{"4":5,"6":7}]'
0 gốc) cho các chuỗi đó.

Giá trị số vô hạn và NAN

RFC không cho phép biểu diễn các giá trị số vô hạn hoặc NAN. Mặc dù vậy, theo mặc định, mô -đun này chấp nhận và đầu ra

>>> import json
>>> json.loads('["foo", {"bar":["baz", null, 1.0, 2]}]')
['foo', {'bar': ['baz', None, 1.0, 2]}]
>>> json.loads('"\\"foo\\bar"')
'"foo\x08ar'
>>> from io import StringIO
>>> io = StringIO('["streaming API"]')
>>> json.load(io)
['streaming API']
0,
>>> import json
>>> json.loads('["foo", {"bar":["baz", null, 1.0, 2]}]')
['foo', {'bar': ['baz', None, 1.0, 2]}]
>>> json.loads('"\\"foo\\bar"')
'"foo\x08ar'
>>> from io import StringIO
>>> io = StringIO('["streaming API"]')
>>> json.load(io)
['streaming API']
1 và
>>> import json
>>> print(json.dumps({'4': 5, '6': 7}, sort_keys=True, indent=4))
{
    "4": 5,
    "6": 7
}
9 như thể chúng là giá trị số JSON hợp lệ của JSON:

>>> print json.dumps(x, ensure_ascii=False)
{"some_key": "Enviar invitación privada"}
2

Trong bộ tuần tự, tham số allow_nan có thể được sử dụng để thay đổi hành vi này. Trong Deserializer, tham số parse_constant có thể được sử dụng để thay đổi hành vi này.

Tên lặp đi lặp lại trong một đối tượng Ex

RFC chỉ định rằng các tên trong một đối tượng JSON phải là duy nhất, nhưng không bắt buộc làm thế nào các tên lặp lại trong các đối tượng JSON nên được xử lý. Theo mặc định, mô -đun này không nêu ra một ngoại lệ; Thay vào đó, nó bỏ qua tất cả trừ cặp giá trị tên cuối cùng cho một tên nhất định:

>>> print json.dumps(x, ensure_ascii=False)
{"some_key": "Enviar invitación privada"}
3

Tham số object_pairs_hook có thể được sử dụng để thay đổi hành vi này.

Các giá trị không đối tượng cấp cao nhất, không phải là giá trị

Phiên bản cũ của JSON được chỉ định bởi RFC 4627 lỗi thời yêu cầu rằng giá trị cấp cao nhất của văn bản JSON phải là đối tượng JSON hoặc mảng (Python

>>> import json
>>> class ComplexEncoder(json.JSONEncoder):
...     def default(self, obj):
...         if isinstance(obj, complex):
...             return [obj.real, obj.imag]
...         # Let the base class default method raise the TypeError
...         return json.JSONEncoder.default(self, obj)
...
>>> json.dumps(2 + 1j, cls=ComplexEncoder)
'[2.0, 1.0]'
>>> ComplexEncoder().encode(2 + 1j)
'[2.0, 1.0]'
>>> list(ComplexEncoder().iterencode(2 + 1j))
['[2.0', ', 1.0', ']']
6 hoặc
>>> print json.dumps(x, ensure_ascii=False)
{"some_key": "Enviar invitación privada"}
58) và không thể là JSON NULL, Boolean, Number, hoặc Chuỗi giá trị. RFC 7159 đã loại bỏ sự hạn chế đó và mô -đun này không và chưa bao giờ thực hiện hạn chế đó trong bộ tuần tự hoặc trình phân hủy của nó.RFC 4627 required that the top-level value of a JSON text must be either a JSON object or array (Python
>>> import json
>>> class ComplexEncoder(json.JSONEncoder):
...     def default(self, obj):
...         if isinstance(obj, complex):
...             return [obj.real, obj.imag]
...         # Let the base class default method raise the TypeError
...         return json.JSONEncoder.default(self, obj)
...
>>> json.dumps(2 + 1j, cls=ComplexEncoder)
'[2.0, 1.0]'
>>> ComplexEncoder().encode(2 + 1j)
'[2.0, 1.0]'
>>> list(ComplexEncoder().iterencode(2 + 1j))
['[2.0', ', 1.0', ']']
6 or
>>> print json.dumps(x, ensure_ascii=False)
{"some_key": "Enviar invitación privada"}
58), and could not be a JSON null, boolean, number, or string value. RFC 7159 removed that restriction, and this module does not and has never implemented that restriction in either its serializer or its deserializer.

Bất kể, cho khả năng tương tác tối đa, bạn có thể muốn tự nguyện tuân thủ các hạn chế.

Hạn chế thực hiện

Một số triển khai Deserializer của JSON có thể đặt giới hạn trên:

  • Kích thước của các văn bản JSON được chấp nhận

  • Mức độ lồng tối đa của các đối tượng và mảng JSON

  • Phạm vi và độ chính xác của số JSON

  • Nội dung và độ dài tối đa của chuỗi JSON

Mô -đun này không áp đặt bất kỳ giới hạn nào như vậy ngoài bản thân các kiểu dữ liệu Python có liên quan hoặc chính trình thông dịch Python.

Khi tuần tự hóa thành JSON, hãy cẩn thận với mọi hạn chế như vậy trong các ứng dụng có thể tiêu thụ JSON của bạn. Cụ thể, thông thường các số JSON được phân rã thành các số chính xác kép của IEEE 754 và do đó tuân theo phạm vi biểu diễn và giới hạn chính xác của biểu diễn đó. Điều này đặc biệt có liên quan khi tuần tự hóa các giá trị Python

>>> import json
>>> json.dumps([1, 2, 3, {'4': 5, '6': 7}], separators=(',', ':'))
'[1,2,3,{"4":5,"6":7}]'
1 có độ lớn cực lớn hoặc khi tuần tự hóa các trường hợp của các loại số kỳ lạ của Hồi như
$ echo '{"json":"obj"}' | python -m json.tool
{
    "json": "obj"
}
$ echo '{1.2:3.4}' | python -m json.tool
Expecting property name enclosed in double quotes: line 1 column 2 (char 1)
0.

Giao diện dòng lệnh

Mã nguồn: lib/json/tool.py Lib/json/tool.py


Mô-đun

>>> import json
>>> json.dumps(['foo', {'bar': ('baz', None, 1.0, 2)}])
'["foo", {"bar": ["baz", null, 1.0, 2]}]'
>>> print(json.dumps("\"foo\bar"))
"\"foo\bar"
>>> print(json.dumps('\u1234'))
"\u1234"
>>> print(json.dumps('\\'))
"\\"
>>> print(json.dumps({"c": 0, "b": 0, "a": 0}, sort_keys=True))
{"a": 0, "b": 0, "c": 0}
>>> from io import StringIO
>>> io = StringIO()
>>> json.dump(['streaming API'], io)
>>> io.getvalue()
'["streaming API"]'
7 cung cấp giao diện dòng lệnh đơn giản để xác thực và các đối tượng JSON in khá đẹp.

Nếu các đối số

>>> print json.dumps(x, ensure_ascii=False)
{"some_key": "Enviar invitación privada"}
62 và
>>> print json.dumps(x, ensure_ascii=False)
{"some_key": "Enviar invitación privada"}
63 tùy chọn không được chỉ định,
>>> print json.dumps(x, ensure_ascii=False)
{"some_key": "Enviar invitación privada"}
64 và
>>> print json.dumps(x, ensure_ascii=False)
{"some_key": "Enviar invitación privada"}
65 sẽ được sử dụng tương ứng:

>>> print json.dumps(x, ensure_ascii=False)
{"some_key": "Enviar invitación privada"}
4

Đã thay đổi trong phiên bản 3.5: Đầu ra hiện có cùng thứ tự với đầu vào. Sử dụng tùy chọn

>>> print json.dumps(x, ensure_ascii=False)
{"some_key": "Enviar invitación privada"}
66 để sắp xếp đầu ra của từ điển theo thứ tự bảng chữ cái theo khóa.The output is now in the same order as the input. Use the
>>> print json.dumps(x, ensure_ascii=False)
{"some_key": "Enviar invitación privada"}
66 option to sort the output of dictionaries alphabetically by key.

Tùy chọn dòng lệnh Jo

trong tập tin¶

Tệp JSON được xác thực hoặc được in khá:

>>> print json.dumps(x, ensure_ascii=False)
{"some_key": "Enviar invitación privada"}
5

Nếu không được chỉ định, hãy đọc từ

>>> print json.dumps(x, ensure_ascii=False)
{"some_key": "Enviar invitación privada"}
64.

trang phục

Viết đầu ra của Infile vào trang phục đã cho. Nếu không, hãy viết nó vào

>>> print json.dumps(x, ensure_ascii=False)
{"some_key": "Enviar invitación privada"}
65.

.

Sắp xếp đầu ra của từ điển theo thứ tự bảng chữ cái theo khóa.

Mới trong phiên bản 3.5.

.

Vô hiệu hóa việc thoát các ký tự không phải ASCII, xem

>>> print json.dumps(x, ensure_ascii=False)
{"some_key": "Enviar invitación privada"}
69 để biết thêm thông tin.

Mới trong phiên bản 3.9.

--Json-lines¶

Phân tích mọi dòng đầu vào dưới dạng đối tượng JSON riêng biệt.

Mới trong phiên bản 3.8.

-Indindent,-tab,-không có suy nghĩ,-Compact¶,--tab, --no-indent,--compact

Các tùy chọn loại trừ lẫn nhau để kiểm soát khoảng trắng.

Mới trong phiên bản 3.9.

--Json-lines¶,--help

Phân tích mọi dòng đầu vào dưới dạng đối tượng JSON riêng biệt.

Mới trong phiên bản 3.8.

1

-Indindent,-tab,-không có suy nghĩ,-Compact¶