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的例子

 {
"firstName": "John",
"lastName": "Smith",
"male": true,
"age": 25,
"address":
{
"streetAddress": "21 2nd Street",
"city": "New York",
"state": "NY",
"postalCode": ""
},
"phoneNumber":
[
{
"type": "home",
"number": "212 555-1234"
},
{
"type": "fax",
"number": "646 555-4567"
}
]
}

通过此例子,也就算很形象的知道了,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 """
http://www.crifan.com/python_handle_json_sample_code
Version: 2013-06-23
Author: Crifan Li
Contact: http://www.crifan.com/contact_me/
""" import json def python_json():
print "--- 1. Demo json to object value (here is dict) ---"
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":""}"""
#print "inputJsonStr=",inputJsonStr
convertedDict = json.loads(inputJsonStr, "utf-8")
print "type(convertedDict)=",type(convertedDict); #type(convertedDict)= <type 'dict'>
print "convertedDict=",convertedDict # 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
# .jpg', u'Replies': None, u'Content': u'\u5076\u662f\u6765\u6d4b\u8bd5\u8bc4\u8bba\u6ef4\uff0c\u54c8\u54c8', u'ArticleId': 7392749, u'ParentI
# 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
# 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'
# BlogId': 1158641}], u'page': {u'PageIndex': 1, u'PageCount': 0, u'PageSize': 20, u'RecordCount': 0}, u'fileName': u'7392749'} #now can output some field value
filename = convertedDict['fileName']
print "filename=",filename; #filename= 7392749
# dictList = convertedDict['list']
# for eachDict in dictList:
# print "eachDict=",eachDict print "--- 2. Demo object value to json ---"
jsonStr = json.dumps(convertedDict);
print "type(jsonStr)=",type(jsonStr); #type(jsonStr)= <type 'str'>
print "jsonStr=",jsonStr print "=== more about json can refer: docs.python.org/2/library/json.html ===" if __name__ == '__main__':
python_json()

json转对象:

 convertedObjVal = json.loads(inputJsonStr)

对象转json:

 jsonStr = json.dumps(objValue)

JSON+如何处理JSON字符串的更多相关文章

  1. (转)什么是JSON+如何处理JSON字符串

    仍然是crifan的好文: http://www.crifan.com/summary_what_is_json_and_how_to_process_json_string/ . . . .

  2. ajax技术返回json如何处理

    json只是一种文本字符串. Smarty是一个使用PHP写出来的模板引擎. ajax如何处理json数据格式 ①json的格式如下: "{属性名:属性值,属性名:属性值}". 因 ...

  3. js中的json对象和字符串之间的转化

    字符串转对象(strJSON代表json字符串)   var obj = eval(strJSON);   var obj = strJSON.parseJSON();   var obj = JSO ...

  4. js中json对象和字符串的转换

    JSON.parse() : 字符串-->json对象 var str = '{"name":"huangxiaojian","age" ...

  5. JSon_零基础_006_将JSon格式的字符串转换为Java对象

    需求: 将JSon格式的字符串转换为Java对象. 应用此技术从一个json对象字符串格式中得到一个java对应的对象. JSONObject是一个“name.values”集合, 通过get(key ...

  6. json对象与字符串互转

    javascript 1 JSON.parse() 方法用于将一个 JSON 字符串转换为对象. JSON.parse(text[, reviver]) text:必需, 一个有效的 JSON 字符串 ...

  7. json格式的字符串转为json对象遇到特殊字符问题解决

    中午做后台发过来的json的时候转为对象,可是有几条数据一直出不来,检查发现json里包含了换行符,造成这种情况的原因可能是编辑部门在编辑的时候打的回车造成的 假设有这样一段json格式的字符串 va ...

  8. 解决如下json格式的字符串不能使用DataContractJsonSerializer序列化和反序列化 分类: JSON 2015-01-28 14:26 72人阅读 评论(0) 收藏

    可以解决如下json格式的字符串不能使用DataContractJsonSerializer反序列化 {     "ss": "sss",     " ...

  9. android实现json数据的解析和把数据转换成json格式的字符串

    利用android sdk里面的 JSONObject和JSONArray把集合或者普通数据,转换成json格式的字符串 JSONObject和JSONArray解析json格式的字符串为集合或者一般 ...

随机推荐

  1. bootstrap和JS实现下拉菜单

    // bootstrap下拉菜单 <div class="btn-group"> <button id="button_text" type= ...

  2. sql 脚本过大

    先把sql脚本文件中的创建部分  剪切 出来执行,创建一个数据库 然后执行cmd命令 sqlcmd   -S    CAOHONGWEI   -U   sa   -P   p@ss!123   -d  ...

  3. 嵌入式Linux下CAN总线配置

    问题背景:本人开发板使用的是迅为iTOP4412精英版,额外购买的CAN/485模块,如下图: 但是插上模块之后,在终端使用ifconfig can0命令发现开发板读不到CAN设备,显示“ifconf ...

  4. php类知识点滴---魔术方法,系统在特定时机触发的方法

    __get()获取私有或受保护属性时调用的方法 <?php class coach { private $chairfit = "徐晓冬"; public function ...

  5. pheonix从入门到进阶

    别人写的帖子感觉很好,记录一下: https://blog.csdn.net/u013411339/article/details/90657429

  6. npoi 导出

    npoi 导出 public void Output(DataTable table, string SheetName, string reportName) { string result = s ...

  7. windows环境下,mysql的root密码丢失后重置方法

    运行窗口输入 services.msc,检查mysql服务是否启动,如果启动手动停止或输入 net stop mysql 停止msyql服务.   打开cmd命令行,使用cd命令进入mysql 的bi ...

  8. 前端Web浏览器基于Flash如何实时播放监控视频画面(四)之使用videoJs‘拉流’

    本片文章只是起到抛砖引玉的作用,能从头到尾走通就行,并不做深入研究.为了让文章通俗易懂,尽量使用白话描述. 0x001: 下载videoJs 对于Video.js 5.x及更低版本,Flash技术(v ...

  9. ckeditor从word粘贴图片

    自动导入Word图片,或者粘贴Word内容时自动上传所有的图片,并且最终保留Word样式,这应该是Web编辑器里面最基本的一个需求功能了.一般情况下我们将Word内容粘贴到Web编辑器(富文本编辑器) ...

  10. MessagePack Jackson 数据大小

    我们在使用 MessagePack 对 List 对象数据进行序列化的时候,发现序列化以后的二进制数组数据偏大的情况. 请注意,不是所有的 List 对象都会出现这种情况,这个根据你 List 对象中 ...