官方解釋:
JSON(JavaScript Object Notation)是一種輕量級的數據交換格式。人類很容易讀寫。機器很容易解析和生成。它基於 JavaScript編程語言的一部分, 標準ECMA-262第3版 - 1999年12月。JSON是一種完全獨立於語言的文本格式,但使用C語言系列程序員熟悉的約定,包括C,C ++,C#,Java,JavaScript,Perl,Python等等。這些屬性使JSON成爲理想的數據交換語言。
JSON基於兩種結構:
- 名稱/值對的集合。在各種語言中,這被實現爲對象,記錄,結構,字典,散列表,鍵控列表或關聯數組。
- 有序的值列表。在大多數語言中,這被實現爲數組,向量,列表或序列。
這些是通用數據結構。實際上,所有現代編程語言都以某種形式支持它們。有意義的是,可與編程語言互換的數據格式也基於這些結構。
Python 中的json模塊,官方介紹:https://docs.python.org/3.7/library/json.html
在python中,有專門處理json格式的模塊—— json 和 picle模塊
Json 模塊提供了四個方法: dumps、dump、loads、load
+-------------------+---------------+ | Python | JSON | +===================+===============+ | dict | object | +-------------------+---------------+ | list, tuple | array | +-------------------+---------------+ | str | string | +-------------------+---------------+ | int, float | number | +-------------------+---------------+ | True | true | +-------------------+---------------+ | False | false | +-------------------+---------------+ | None | null | +-------------------+---------------+
1.將Python對象轉換爲json格式:
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):
# 將生成的json串,直接存入指定的文件中,沒有返回值
dumps(obj, *, skipkeys=False, ensure_ascii=True, check_circular=True,allow_nan=True, cls=None, indent=None, separators=None,
default=None, sort_keys=False, **kw):
# 將生成的json串返回
其他參數說明:
skipkeys:默認False,如果傳入的obj是字典類型,且字典的key類型不在(``str``, ``int``, ``float``, ``bool``, ``None``)中,會報格式錯誤,如有,則設爲Ture;
ensure_ascii:默認True,設爲False時,中文顯示正常;
check_circular:默認Ture,設爲False時,會跳過循環引用檢查,如果循環引用出錯會導致溢出錯誤;
sort_keys:默認False,設爲True時,生成的json按照key值進行排序
上代碼:
#!/usr/bin/env python
# -*- coding:utf-8 -*-
__author__ = "問道編程"
__date__ = "2019/03/18 17:50"
import json
print('---------------\n字符串轉換:')
a = "\"foo\bar"
result = json.dumps(a) # 返回生成的json串
print('a = ', a)
print('result:', result) # 可以發現 result 和 a 在顯示上一樣 但是打印結果不同 說明不是一樣的
print('類型:', type(result))
print('---------------\n將轉換後的json寫入文件:')
myfile = open('a.json', 'w')
a = [1, 2, 3, {'4': 5, '6': 7}]
json.dump(a, myfile, indent=4) # 沒有返回值
myfile.close()
2.將json轉換爲Python對象:
load(fp, *, cls=None, object_hook=None, parse_float=None,parse_int=None, parse_constant=None, object_pairs_hook=None, **kw):
# 從文件中讀取json串,轉換爲Python對象返回
loads(s, *, encoding=None, cls=None, object_hook=None, parse_float=None,parse_int=None, parse_constant=None, object_pairs_hook=None, **kw):
# 將json串直接轉換爲Python對象
上代碼:
#!/usr/bin/env python
# -*- coding:utf-8 -*-
__author__ = "問道編程"
__date__ = "2019/03/18 17:50"
import json
print('---------------\n轉換爲列表:')
json_str = '["foo", {"bar":["baz", null, 1.0, 2]}]'
result = json.loads(json_str) # 將json串轉換爲Python對象
print('json_str = ', json_str)
print('result:', result)
print('json_str類型:', type(json_str))
print('result類型:', type(result))
print('---------------\n從文件中解碼json:')
myfile = open('a.json', 'r')
result = json.load(myfile)
print('result:', result)
print('result類型:', type(result))