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的例子
{
"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的一些注意事项
- 发送的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字符串的更多相关文章
- (转)什么是JSON+如何处理JSON字符串
仍然是crifan的好文: http://www.crifan.com/summary_what_is_json_and_how_to_process_json_string/ . . . .
- ajax技术返回json如何处理
json只是一种文本字符串. Smarty是一个使用PHP写出来的模板引擎. ajax如何处理json数据格式 ①json的格式如下: "{属性名:属性值,属性名:属性值}". 因 ...
- js中的json对象和字符串之间的转化
字符串转对象(strJSON代表json字符串) var obj = eval(strJSON); var obj = strJSON.parseJSON(); var obj = JSO ...
- js中json对象和字符串的转换
JSON.parse() : 字符串-->json对象 var str = '{"name":"huangxiaojian","age" ...
- JSon_零基础_006_将JSon格式的字符串转换为Java对象
需求: 将JSon格式的字符串转换为Java对象. 应用此技术从一个json对象字符串格式中得到一个java对应的对象. JSONObject是一个“name.values”集合, 通过get(key ...
- json对象与字符串互转
javascript 1 JSON.parse() 方法用于将一个 JSON 字符串转换为对象. JSON.parse(text[, reviver]) text:必需, 一个有效的 JSON 字符串 ...
- json格式的字符串转为json对象遇到特殊字符问题解决
中午做后台发过来的json的时候转为对象,可是有几条数据一直出不来,检查发现json里包含了换行符,造成这种情况的原因可能是编辑部门在编辑的时候打的回车造成的 假设有这样一段json格式的字符串 va ...
- 解决如下json格式的字符串不能使用DataContractJsonSerializer序列化和反序列化 分类: JSON 2015-01-28 14:26 72人阅读 评论(0) 收藏
可以解决如下json格式的字符串不能使用DataContractJsonSerializer反序列化 { "ss": "sss", " ...
- android实现json数据的解析和把数据转换成json格式的字符串
利用android sdk里面的 JSONObject和JSONArray把集合或者普通数据,转换成json格式的字符串 JSONObject和JSONArray解析json格式的字符串为集合或者一般 ...
随机推荐
- 【网络协议】动态主机配置协议DHCP
动态主机配置协议DHCP 当某组织获得一块地址后,就可以为本组织内的主机或者路由器分配IP地址.这个分配工作可以由系统管理员手动通过网络管理工具来完成.也可以由动态主机配置协议(Dynamic Hos ...
- Rsync+Sersync实时同步数据目录
第1章 Rsync简介 1.1 Rsync基本概述 rsync是一款开源的备份工具,可以在不同主机之间进行同步,可实现全量备份与增量备份 全量:将全部数据,进行传输覆盖 增量:只传输差异部分的数据 1 ...
- Cmd有关IP的部分命令
ping命令判断系统数据包在传送的时候至少会经过一个以上的路由器,当数据包经过一个路由器的时候,TTL就会自动减1,如果减到0了还是没有传送到目的主机,那么这个数据包就会自动丢失,这时路由器会发送一个 ...
- SpringBoot 上传读取图片 巨坑
之前自己也做过文件上传,不过存储路径放在那个tomcat服务器路径下,就没遇到什么问题 但前几天在做图片的上传,想把文件放在项目下指定的一个文件夹下,就感觉有点麻烦 修改配置文件 在springboo ...
- u-boot DM初始化流程
initr_dm dm_init_and_scan dm_init ((1)创建根设备root的udevice,存放在gd->dm_root中 (2)初始化uclass链表gd->ucl ...
- java中创建List<>类型的数组-20171028
遇到了一个问题需要创建List类型的数组,但是在网上查了很多资料,好像发现并不能创建泛型的数组,于是改用Hashmap实现同等的功能. 代码如下: Map<String,List<AddL ...
- vue的store状态管理模式
var store = { debug: true, state: { message: 'Hello!' }, setMessageAction (newValue) { //所有 store 中 ...
- html 与 jsp 文件格式区别
html 与 jsp 文件格式区别 html5 <!DOCTYPE html> <html> <head> <meta charset="UTF-8 ...
- EL表达式接收值
- jsp上传超大文件解决方案
1,项目调研 因为需要研究下断点上传的问题.找了很久终于找到一个比较好的项目. 在GoogleCode上面,代码弄下来超级不方便,还是配置hosts才好,把代码重新上传到了github上面. http ...