JSON+如何处理JSON字符串

 JSON(Javascript Object Notation)是一种轻量级的数据交换语言,以文字为基础,且易于让人阅读。尽管JSON是在Javascript的一个子集,但JSON是独立于语言的文本格式,并且采用了类似于C语言家族的一些习惯。
 {"list":[          
{"ArticleId":7392749,"BlogId":1158641,"CommentId":2182295,"Content":"偶是来测试评论滴,哈哈","ParentId":0,"PostTime":"2分钟前","Replies":null,"UserName":"crifan","Userface":"http://avatar.csdn.net/E/D/E/3_crifan.jpg"},            
{"ArticleId":7392749,"BlogId":1158641,"CommentId":2182254,"Content":"mark__","ParentId":0,"PostTime":"52分钟前","Replies":null,"UserName":"mars_tl","Userface":"http://avatar.csdn.net/9/3/0/3_mars_tl.jpg"}],"page":{"PageSize":20,"PageIndex":1,"RecordCount":0,"PageCount":0},"fileName":"7392749"}

JSON的简要解释

  • JSON全称是Javascript Object Notation,很明显,是源于Javascript。此处暂可不深究这方面,知道这点即可。
  • JSON是一种字符串,有一定特定的语法格式的字符串;
  • JSON之所以定义这样的语法格式,目的在于方便数据的交换。即,一些数据,通过JSON这种格式,从一个地方,尤其是网络上,发送,传递到另外一个地方,然后使得接受者,也很容易理解相关的数据。

 

JSON的最基本语法

  • 对象,即一个变量名,一个值,对应的写法是:{name:value}
  • 列表,有多个元素是,写法是:[collection, collection]

JSON的例子

 1 {
 2      "firstName": "John",
 3      "lastName": "Smith",
 4      "male": true,
 5      "age": 25,
 6      "address":
 7      {
 8          "streetAddress": "21 2nd Street",
 9          "city": "New York",
10          "state": "NY",
11          "postalCode": "10021"
12      },
13      "phoneNumber":
14      [
15          {
16            "type": "home",
17            "number": "212 555-1234"
18          },
19          {
20            "type": "fax",
21            "number": "646 555-4567"
22          }
23      ]
24  }

通过此例子,也就算很形象的知道了,JSON算是一个结构很清晰的,用于表示数据的一种格式。

JSON的一些注意事项

  1. 发送的JSON字符串是紧凑型(无缩进的)
    •   需要说明的是,由于JSON的发明,就是为了用于数据交换,所以,在发送JSON字符串之前,其实都不是你所看到的上面的,格式化,带缩进的那种,都是紧凑型的,字符之间没有空格的,

    就像此文最开始所举例的那种的,将这些紧凑的数据,发送给别人。

  2. 用格式化工具格式化JSON字符串(为带缩进的)以方便查看

    •   而接受者,作为人类,想要查看数据,能清晰的看懂数据,一般会用一些工具,比如Notepad++中的插件JSMin,去格式化。

 

程序中是如何处理JSON的

  • 很多程序中,都会遇到JSON字符串,所以就涉及到,如何通过程序处理JSON字符串,比如将JSON字符串,转换为对应的字典类的变量等等。
  • 很明显,当然是可以通过你手动写代码,一点点处理的,但是更明显,效率很低。
  • 而且现实中,的确是,针对不同的语言,已经有了对应的JSON相关库函数,去用于处理JSON字符串了。
  • 对于这些不同语言的,对应的JSON处理的库,人家JSON官网中,已经帮你整理好了。你自己去看,学习了解对应的JSON库如何使用的,即可。
  • 其中包括了N种语言的,N个JSON处理相关的库,我就不重复去罗列了,自己去JSON官网看即可。
  • 此处,只是说说,我所用过的一些JSON的库:

Python中内置支持Json库处理json:

 1 """
2 http://www.crifan.com/python_handle_json_sample_code
3 Version: 2013-06-23 4 Author: Crifan Li 5 Contact: http://www.crifan.com/contact_me/ 6 """ 7 8 import json 9 10 def python_json(): 11 print "--- 1. Demo json to object value (here is dict) ---" 12 inputJsonStr = """{"list":[{"ArticleId":7392749,"BlogId":1158641,"CommentId":2182295,"Content":"偶是来测试评论滴,哈哈","ParentId":0,"PostTime":"2分钟前","Replies":null,"UserName":"crifan","Userface":"http://avatar.csdn.net/E/D/E/3_crifan.jpg"},{"ArticleId":7392749,"BlogId":1158641,"CommentId":2182254,"Content":"mark__","ParentId":0,"PostTime":"52分钟前","Replies":null,"UserName":"mars_tl","Userface":"http://avatar.csdn.net/9/3/0/3_mars_tl.jpg"}],"page":{"PageSize":20,"PageIndex":1,"RecordCount":0,"PageCount":0},"fileName":"7392749"}""" 13 #print "inputJsonStr=",inputJsonStr 14 convertedDict = json.loads(inputJsonStr, "utf-8") 15 print "type(convertedDict)=",type(convertedDict); #type(convertedDict)= <type 'dict'> 16 print "convertedDict=",convertedDict 17 18 # convertedDict= {u'list': [{u'UserName': u'crifan', u'PostTime': u'2\u5206\u949f\u524d', u'Userface': u'http://avatar.csdn.net/E/D/E/3_crifan 19 # .jpg', u'Replies': None, u'Content': u'\u5076\u662f\u6765\u6d4b\u8bd5\u8bc4\u8bba\u6ef4\uff0c\u54c8\u54c8', u'ArticleId': 7392749, u'ParentI 20 # d': 0, u'CommentId': 2182295, u'BlogId': 1158641}, {u'UserName': u'mars_tl', u'PostTime': u'52\u5206\u949f\u524d', u'Userface': u'http://ava 21 # tar.csdn.net/9/3/0/3_mars_tl.jpg', u'Replies': None, u'Content': u'mark__', u'ArticleId': 7392749, u'ParentId': 0, u'CommentId': 2182254, u' 22 # BlogId': 1158641}], u'page': {u'PageIndex': 1, u'PageCount': 0, u'PageSize': 20, u'RecordCount': 0}, u'fileName': u'7392749'} 23 24 #now can output some field value 25 filename = convertedDict['fileName'] 26 print "filename=",filename; #filename= 7392749 27 # dictList = convertedDict['list'] 28 # for eachDict in dictList: 29 # print "eachDict=",eachDict 30 31 print "--- 2. Demo object value to json ---" 32 jsonStr = json.dumps(convertedDict); 33 print "type(jsonStr)=",type(jsonStr); #type(jsonStr)= <type 'str'> 34 print "jsonStr=",jsonStr 35 36 print "=== more about json can refer: docs.python.org/2/library/json.html ===" 37 38 if __name__ == '__main__': 39 python_json()

 

json转对象:

1 convertedObjVal = json.loads(inputJsonStr)

对象转json:

1 jsonStr = json.dumps(objValue)

 

posted on 2013-08-09 00:52  JasonKwok  阅读(635)  评论(0)    收藏  举报

导航