python 正則表示式與JSON-JSON
阿新 • • 發佈:2020-08-06
1、json 是一種輕量級的跨語言資料交換格式。
輕量的意思是 比起xml來說,更加輕量。比xml傳輸的資料更易讀,更易於極細,傳輸的效率要高。
2、怎麼檢查,一個字串是個json字串?
json 的key 和字串value 都是用雙引號擴起來 不能是單引號
能解析:解析成dict,讀取時按照dict的存取方式讀就好了
import json #coding=utf-8 json_str = '{"name":"anson","age":18}' student = json.loads(json_str) print(student) # [Running] python -u "/Users/anson/Documents/Project/python_ToolCodes/test15.py"# {u'age': 18, u'name': u'anson'}
不能解析:
json_str = '{'name':'anson','age':18}' [Running] python -u "/Users/anson/Documents/Project/python_ToolCodes/test15.py" File "/Users/anson/Documents/Project/python_ToolCodes/test15.py", line 4 json_str = '{'name':'anson','age':18}' ^ SyntaxError: invalid syntax
不能解析:
json_str = "{'name':'anson','age':18}" [Running] python -u "/Users/anson/Documents/Project/python_ToolCodes/test15.py" Traceback (most recent call last): File "/Users/anson/Documents/Project/python_ToolCodes/test15.py", line 5, in <module> student = json.loads(json_str) File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/json/__init__.py", line 339, in loads return _default_decoder.decode(s) File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/json/decoder.py", line 364, in decode obj, end = self.raw_decode(s, idx=_w(s, 0).end()) File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/json/decoder.py", line 380, in raw_decode obj, end = self.scan_once(s, idx) ValueError: Expecting property name: line 1 column 2 (char 1)
3、理解下半句:json時一種資料交換格式。資料格式有很多,比如字串、陣列
- json 是字串格式的,那這麼表示
json_str = '{"name":"anson","age":18}'
被解析後,解析出來是這樣
{u'age': 18, u'name': u'anson'}
是個dict型別
import json #coding=utf-8 json_str = '{"name":"anson","age":18}' student = json.loads(json_str) print(type(student)) # [Running] python -u "/Users/anson/Documents/Project/python_ToolCodes/test15.py" # <type 'dict'>
- json 是陣列格式的,那這麼表示
json_arr = '[{"name":"anson","age":18},{"name":"kiki","age":19}]'
這麼解析能成功:
import json #coding=utf-8 #json_str = '{"name":"anson","age":18}' json_arr = '[{"name":"anson","age":18},{"name":"kiki","age":19}]' student = json.loads(json_arr) print(student) # [Running] python -u "/Users/anson/Documents/Project/python_ToolCodes/test15.py" # [{u'age': 18, u'name': u'anson'}, {u'age': 19, u'name': u'kiki'}]
import json #coding=utf-8 #json_str = '{"name":"anson","age":18}' json_arr = '[{"name":"anson","age":18},{"name":"kiki","age":19}]' student = json.loads(json_arr) print(type(student)) # [Running] python -u "/Users/anson/Documents/Project/python_ToolCodes/test15.py" # <type 'list'>
解析出來是個list型別
總結:json 格式於python 解析格式一覽表
json python
object dict
array list
string dict
number int
number float
true True
false False
null None
3、json 序列化:python的資料型別格式轉成json
#coding=utf-8 import json student = [ {'name':'anson','age':18,'flag':False}, {'name':'kiki', 'age':19,'flag':True}, ] json_str = json.dumps(student) print(type(json_str)) print (json_str) # [Running] python -u "/Users/anson/Documents/Project/python_ToolCodes/test16.py" # <type 'str'> # [{"age": 18, "flag": false, "name": "anson"}, {"age": 19, "flag": true, "name": "kiki"}]
4、總結一個誤區
JSON 物件 JSON 和JSON 字串是啥,有啥區別?
JSON 物件:JSON 物件放到Javascript裡面,是有這個概念的,但是放到python裡面,就沒這種說法了(大神的理解,我就是死記硬背)
JSON:是個概念,說的是一種資料交換格式
JSON 字串:不說了 一直講的都是json字串