1. 程式人生 > 其它 >Python與JSON

Python與JSON

技術標籤:Pythonpythonjson

JSON是JavaScript Object Notation的簡寫,即JavaScript物件標記。

JSON是一種輕量級的資料交換格式。

字串是JSON的表現形式。

JSON字串:符合JSON格式的字串。如:{"name": "qiyue"}

JSON字串中的key需要加雙引號。

JSON的優勢:

  • 易於閱讀
  • 易於解析
  • 網路傳輸效率高(輕量、簡潔)
  • 非常適合做跨語言交換資料

反序列化

反序列化:由字串到某一種語言的資料結構的解析過程。

json字串(json object)對應到python中是字典形式。

方法:json.loads()

示例:

import json
json_str='{"name":"qiyue","age":18}'
student=json.loads(json_str)
print(type(student))
print(student)

#執行結果
> python p5.py
<class 'dict'>
{'name': 'qiyue', 'age': 18}

loads()函式主要功能:將json的資料型別轉換為python的資料型別。

示例(json陣列格式轉換為python中的list資料結構):

import json
json_str2='[{"name":"qiyue","age":18,"flag":false},{"name":"妲己","age":17}]' #有兩個object的陣列
student=json.loads(json_str2)
print(type(student))
print(student)

#執行結果
> python p5.py
<class 'list'>
[{'name': 'qiyue', 'age': 18, 'flag': False}, {'name': '妲己', 'age': 17}]

JSON和Python中的資料格式對應

序列化

序列化:python的資料型別向JSON字串轉換的過程。

方法:json.dumps()

import json
student=[
          {'name': 'qiyue', 'age': 18, 'flag': False}, 
          {'name': '妲己', 'age': 17}
        ]
json_str=json.dumps(student)
print(type(json_str))
print(json_str)

#執行結果
> python p4.py
<class 'str'>
[{"name": "qiyue", "age": 18, "flag": false}, {"name": "\u59b2\u5df1", "age": 17}]
#中文輸出的是unicode編碼的結果

Tips:

JSON物件:如果放在javascript裡面說,json物件這個說法是成立的;如果跳出語言範疇,沒有json物件這個說法。

JSON並不是Javascript的附屬。