Python常用模塊--json

 

官方解釋

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

pickle 模塊也提供了四個功能: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))

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章