1. 程式人生 > 實用技巧 >python 正則表示式與JSON-JSON

python 正則表示式與JSON-JSON

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字串