>æä»¥ä½ ä»¬æ¢æ¯ç¥çéæ°ï¼å£æ´èç±ç人ï¼å°±è¦åææ¯ãæ©æ
ãè°¦èãæ¸©æãå¿èçå¿ãåè¥è¿äººä¸é£äººæå«éï¼æ»è¦å½¼æ¤å
容ï¼å½¼æ¤é¥¶æï¼ä¸»æä¹é¥¶æäºä½ 们ï¼ä½ 们ä¹è¦ææ ·é¥¶æäººãå¨è¿ä¸åä¹å¤ï¼è¦åçç±å¿ï¼ç±å¿å°±æ¯èç»å
¨å¾·çãåè¦å«åºç£çå¹³å®å¨ä½ 们å¿éä½ä¸»ï¼ä½ 们ä¹ä¸ºæ¤èå¬ï¼å½ä¸ºä¸ä½ï¼ä¸è¦åæè°¢çå¿ã(COLOSSIANS 3:12-15)
#æ ååº(8)
##JSON
å°±ä¼ éæ°æ®èè¨ï¼XMLæ¯ä¸ç§éæ©ï¼è¿æå¦å¤ä¸ç§ââJSONï¼å®æ¯ä¸ç§è½»éçº§çæ°æ®äº¤æ¢æ ¼å¼ï¼å¦æè¯»è
è¦åwebç¼ç¨ï¼åä¼ç¨å°å®çãæ ¹æ®ç»´åºç¾ç§çç¸å
³å
容ï¼å¯¹JSONåå¦ä¸ç®ä»ï¼
>JSONï¼JavaScript Object Notationï¼æ¯ä¸ç¨®ç±éæ ¼ææ¯Â·å
ç¾
å
ç¦ç¹æ§æ³è¨è¨ãè¼éç´çè³æäº¤æèªè¨ï¼ä»¥æåçºåºç¤ï¼ä¸ææ¼è®äººé±è®ãå管JSONæ¯Javascriptçä¸ååéï¼ä½JSONæ¯ç¨ç«æ¼èªè¨çææ¬æ ¼å¼ï¼ä¸¦ä¸æ¡ç¨äºé¡ä¼¼æ¼Cèªè¨å®¶æçä¸äºç¿æ
£ã
å
³äºJSONæ´ä¸ºè¯¦ç»çå
容ï¼å¯ä»¥åèå
¶å®æ¹ç½ç«ï¼http://www.json.org
ä»ä¸è¿°ç½ç«æåé¨åå
容ï¼äºè§£ä¸ä¸JSONçç»æï¼
JSON建æäºä¸¤ç§ç»æï¼
- âåç§°/å¼â对çéåï¼A collection of name/value pairsï¼ãä¸åçè¯è¨ä¸ï¼å®è¢«ç解为对象ï¼objectï¼ï¼çºªå½ï¼recordï¼ï¼ç»æï¼structï¼ï¼åå
¸ï¼dictionaryï¼ï¼åå¸è¡¨ï¼hash tableï¼ï¼æé®å表ï¼keyed listï¼ï¼æè
å
³èæ°ç» ï¼associative arrayï¼ã
- å¼çæåºå表ï¼An ordered list of valuesï¼ãå¨å¤§é¨åè¯è¨ä¸ï¼å®è¢«ç解为æ°ç»ï¼arrayï¼ã
pythonæ ååºä¸æJSON模åï¼ä¸»è¦æ¯æ§è¡åºåååååºåååè½ï¼
- åºååï¼encodingï¼æä¸ä¸ªPython对象ç¼ç 转åæJSONå符串
- ååºååï¼decodingï¼æJSONæ ¼å¼å符串解ç 转æ¢ä¸ºPythonæ°æ®å¯¹è±¡
###åºæ¬æä½
JSON模åç¸å¯¹XMLå纯äºå¾å¤ï¼
>>> import json
>>> json.__all__
['dump', 'dumps', 'load', 'loads', 'JSONDecoder', 'JSONEncoder']
#Python 3çæ¾ç¤ºç»æå¦ä¸ï¼
['dump', 'dumps', 'load', 'loads', 'JSONDecoder', 'JSONDecodeError', 'JSONEncoder']
**encoding: dumps()**
>>> data = [{"name":"qiwsir", "lang":("python", "english"), "age":40}]
>>> data
[{'lang': ('python', 'english'), 'age': 40, 'name': 'qiwsir'}]
>>> data_json = json.dumps(data)
>>> data_json
'[{"lang": ["python", "english"], "name": "qiwsir", "age": 40}]'
encodingçæä½æ¯æ¯è¾ç®åçï¼è¯·æ³¨æè§å¯`data`å`data_json`çä¸åââlangçå¼ä»å
ç»åæäºå表ï¼è¿æä¸åï¼
>>> type(data_json)
>>> type(data)
**decoding: loads()**
decodingçè¿ç¨ä¹åä¸é¢ä¸æ ·ç®åï¼
>>> new_data = json.loads(data_json)
>>> new_data
[{u'lang': [u'python', u'english'], u'age': 40, u'name': u'qiwsir'}]
éè¦æ³¨æçæ¯ï¼è§£ç ä¹åï¼å¹¶æ²¡æå°å
ç»è¿åã
ä¸é¢çdataé½ä¸æ¯å¾é¿ï¼è¿è½ååé
读ï¼å¦æå¾é¿äºï¼é
读就æé¾åº¦äºãæä»¥ï¼JSONç`dumps()`æä¾äºå¯éåæ°ï¼å©ç¨å®ä»¬è½å¨è¾åºä¸å¯¹äººæ´å好ï¼è¿å¯¹æºå¨æ¯æ æè°çï¼ã
>>> data_j = json.dumps(data, sort_keys=True, indent=2)
>>> print data_j #Python 3: print(data_j)
[
{
"age": 40,
"lang": [
"python",
"english"
],
"name": "qiwsir"
}
]
`sort_keys=True`æææ¯æç
§é®çåå
¸é¡ºåºæåºï¼`indent=2`æ¯è®©æ¯ä¸ªé®å¼å¯¹æ¾ç¤ºçæ¶åï¼ä»¥ç¼©è¿ä¸¤ä¸ªå符对é½ãè¿æ ·çè§è§ææå¥½å¤äºã
###大jsonå符串
å¦ææ°æ®ä¸æ¯å¾å¤§ï¼ä¸é¢çæä½è¶³å¤äºãä½ç°å¨æ¯æè°âå¤§æ°æ®âæ¶ä»£äºï¼é便ä¸ä¸ªä»ä¹ä¸å¡é½å¨è¯´èªå·±æ¯å¤§æ°æ®ï¼æ¾ç¶ä¸è½æ»è®©JSONå¾å°ï¼äºå®ä¸çæ£çå¤§æ°æ®ï¼åâ大âçJSONä¹ä¸è¡äºãåé¢çæä½æ¹æ³æ¯å°æ°æ®é½è¯»å
¥å
åï¼å¦ææ°æ®å¤ªå¤§äºå°±ä¼å
åæº¢åºãæä¹åï¼JSONæä¾äº`load()`å`dump()`彿°è§£å³è¿ä¸ªé®é¢ï¼æ³¨æï¼è·ä¸é¢å·²ç»ç¨è¿ç彿°ç¸æ¯ï¼æ¯ä¸åçï¼è¯·ä»ç»è§å¯ã
>>> import tempfile #ä¸´æ¶æä»¶æ¨¡å
>>> data
[{'lang': ('python', 'english'), 'age': 40, 'name': 'qiwsir'}]
>>> f = tempfile.NamedTemporaryFile(mode='w+')
>>> json.dump(data, f)
>>> f.flush()
>>> print open(f.name, "r").read() #Python 3: print(open(f.name, "r").read())
[{"lang": ["python", "english"], "age": 40, "name": "qiwsir"}]
###èªå®ä¹æ°æ®ç±»å
ä¸è¬æ
åµä¸ï¼ç¨çæ°æ®ç±»å齿¯Pythoné»è®¤çã使¯ï¼æä»¬å¦ä¹ è¿ç±»åï¼å°±ç¥éï¼èªå·±å¯ä»¥å®ä¹å¯¹è±¡ç±»åçãæ¯å¦ï¼
以ä¸ä»£ç åèï¼[Jsonæ¦è¿°ä»¥åpython对jsonçç¸å
³æä½](http://www.cnblogs.com/coser/archive/2011/12/14/2287739.html)
#!/usr/bin/env python
# coding=utf-8
import json
class Person(object):
def __init__(self,name,age):
self.name = name
self.age = age
def __repr__(self):
return 'Person Object name : %s , age : %d' % (self.name,self.age)
def object2dict(obj): #convert Person to dict
d = {}
d['__class__'] = obj.__class__.__name__
d['__module__'] = obj.__module__
d.update(obj.__dict__)
return d
def dict2object(d): #convert dict ot Person
if '__class__' in d:
class_name = d.pop('__class__')
module_name = d.pop('__module__')
module = __import__(module_name)
class_ = getattr(module, class_name)
args = dict((key.encode('ascii'), value) for key,value in d.items()) #get args
inst = class_(**args) #create new instance
else:
inst = d
return inst
if __name__ == '__main__':
p = Person('Peter',40)
print p
d = object2dict(p)
print d
o = dict2object(d)
print type(o), o
dump = json.dumps(p, default=object2dict)
print dump
load = json.loads(dump, object_hook=dict2object)
print load
------
[æ»ç®å½](./index.md) | [ä¸èï¼æ ååº(7)](./226.md) | [ä¸èï¼ç¬¬ä¸æ¹åº](./228.md)
å¦æä½ è®¤ä¸ºæå¿
è¦æèµæï¼è¯·éè¿æ¯ä»å®ï¼**[email protected]**,ä¸èææ¿ã