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. CentOS 使用 sudo 遇到 command not found 问题解决

    一般通过编译安装的软件会选择自定义路径,例如我编译安装 gvim 在 /usr/loca/bin/ 下,则使用 $ sudo gvim 的时候提示 command not found 问题. 这个问题 ...

  2. 2019.09.24 Device doesn't support wireless sync

    这个是flutter报错的信息: Device doesn't support wireless sync. AMDeviceStartService(device, CFSTR("com. ...

  3. SpringBoot项目 设置全局跨域

    package com.nf147.policy_project; import org.springframework.stereotype.Component; import javax.serv ...

  4. 逻辑卷----LVM的基础和应用

    逻辑卷管理器 Logical Volume Manager-------逻辑卷宗管理器.逻辑扇区管理器.逻辑磁盘管理器,是Linux核心所提供的逻辑卷管理(Logical volume managem ...

  5. 51 Nod 1101 换零钱(动态规划好题)

    1101 换零钱  基准时间限制:1 秒 空间限制:131072 KB 分值: 20 难度:3级算法题  收藏  关注 N元钱换为零钱,有多少不同的换法?币值包括1 2 5分,1 2 5角,1 2 5 ...

  6. eclipse打开项目中文件时左侧project explorer同时展开该文件的路径

    如图,点击Package Explorer面板上的双向箭头图标即可

  7. Java并发之CAS的三大问题

    在Java并发包中有一些并发框架也使用了自旋CAS的方式实现了原子操作,比如:LinkedTransferQueue类的Xfer方法.CAS虽然很高效的解决了原子操作,但是CAS仍然存在三大问题:AB ...

  8. [科普] CPU, GPU, TPU的区别

    Google Cloud 原文链接:https://cloud.google.com/blog/products/ai-machine-learning/what-makes-tpus-fine-tu ...

  9. [笔记]动态规划(dynamic programming)

    动态规划与分治方法都是通过组合子问题的解来求解原问题,区别在于:分治方法将问题划分为互不相交的子问题,递归求解子问题,再将它们的解组合起来,求出原问题的解.分治算法可能反复的求解某些公共子问题,从而使 ...

  10. kali随便写 kali更新源配置

    ./ +文件目录  是执行文件的意思 kali修改更新源及更新 进入源文件进行修改 leafpad /etc/apt/sources.list (其实系统本身就自带了更新源,去掉其注释也是可以的,现在 ...