Python---json数据格式详解
什么是JSON
JSON是一种取代XML的数据结构,和xml相比,它更小巧但描述能力却不差,由于它的小巧所以网络传输数据将减少更多流量从而加快速度。
那么,JSON到底是什么?
JSON就是一串字符串 只不过元素会使用特定的符号标注。
{ } 双括号表示对象
[ ] 中括号表示数组
" " 双引号内是属性或值
: 冒号表示后者是前者的值(这个值可以是字符串、数字、也可以是另一个数组或对象)
所以 {"name": "Michael"} 可以理解为是一个包含name为Michael的对象
而[ {"name": "Michael"} , {"name": "Jerry"} ]就表示包含两个对象的数组
当然了,你也可以使用{ "name" : ["Michael" , "Jerry"] }来简化上面一部,这是一个拥有一个name数组的对象
PS:现在还有很多人存在一些误区,为什么{name:'json'}在检验时通过不了, 那是因为JSON官网最新规范规定,如果是字符串,那不管是键或值最好都用双引号引起来,所以上面的代码就是{"name":"json"}
1varpeople ={ "programmers": [
2
3 { "firstName": "Brett", "lastName":"McLaughlin", "email": "aaaa" },
4
5 { "firstName": "Jason", "lastName":"Hunter", "email": "bbbb" },
6
7 { "firstName": "Elliotte", "lastName":"Harold", "email": "cccc" }
8
9 ],
10
11 "authors": [
12
13 { "firstName": "Isaac", "lastName": "Asimov", "genre": "science fiction" },
14
15 { "firstName": "Tad", "lastName": "Williams", "genre": "fantasy" },
16
17 { "firstName": "Frank", "lastName": "Peretti", "genre": "christian fiction" }
18
19 ],
20
21 "musicians": [
22
23 { "firstName": "Eric", "lastName": "Clapton", "instrument": "guitar" },
24
25 { "firstName": "Sergei", "lastName": "Rachmaninoff", "instrument": "piano" }
26
27 ] }
访问数据
尽管看起来不明显,但是上面的长字符串实际上只是一个数组;将这个数组放进 JavaScript 变量之后,就可以很轻松地访问它。
实际上,只需用点号表示法来表示数组元素。所以,要想访问 programmers 列表的第一个条目的姓氏,
只需在 JavaScript 中使用下面这样的代码:
people.programmers[0].lastName;
注意,数组索引是从零开始的。所以,这行代码首先访问 people变量中的数据;然后移动到称为 programmers的条目,
再移动到第一个记录([0]);最后,访问 lastName键的值。结果是字符串值 “McLaughlin”。
修改 JSON 数据
正如可以用点号和括号访问数据,也可以按照同样的方式轻松地修改数据:
people.musicians[1].lastName = "Rachmaninov";
在将字符串转换为 JavaScript 对象之后,就可以像这样修改变量中的数据。
转换回字符串
当然,如果不能轻松地将对象转换回本文提到的文本格式,
那么所有数据修改都没有太大的价值。在 JavaScript 中这种转换也很简单:
String newJSONtext = people.toJSONString();
这样就行了!现在就获得了一个可以在任何地方使用的文本字符串,
例如,可以将它用作 Ajax 应用程序中的请求字符串。
更重要的是,可以将任何JavaScript 对象转换为 JSON 文本。并非只能处理原来用 JSON 字符串赋值的变量。
为了对名为 myObject的对象进行转换,只需执行相同形式的命令:
String myObjectInJSON = myObject.toJSONString();
这就是 JSON 与本系列讨论的其他数据格式之间最大的差异。如果使用 JSON,
只需调用一个简单的函数,就可以获得经过格式化的数据,可以直接使用了。
对于其他数据格式,需要在原始数据和格式化数据之间进行转换。
即使使用 Document Object Model 这样的 API(提供了将自己的数据结构转换为文本的函数),
也需要学习这个 API 并使用 API 的对象,而不是使用原生的 JavaScript 对象和语法。
最终结论是,如果要处理大量 JavaScript 对象,那么 JSON 几乎肯定是一个好选择,
这样就可以轻松地将数据转换为可以在请求中发送给服务器端程序的格式。
Python---json数据格式详解的更多相关文章
- android之解析json数据格式详解
1.JSON解析 (1).解析Object之一: view sourceprint? 1 {"url":"http://www.cnblogs.com/qianx ...
- 最强常用开发库总结 - JSON库详解
最强常用开发库总结 - JSON库详解 JSON应用非常广泛,对于Java常用的JSON库要完全掌握.@pdai JSON简介 JSON是什么 JSON 指的是 JavaScript 对象表示法(Ja ...
- Python 字符串方法详解
Python 字符串方法详解 本文最初发表于赖勇浩(恋花蝶)的博客(http://blog.csdn.net/lanphaday),如蒙转载,敬请保留全文完整,切勿去除本声明和作者信息. ...
- (转)JPEG图片数据结构分析- 附Png数据格式详解.doc
一.简述 JPEG是一个压缩标准,又可分为标准JPEG.渐进式JPEG及JPEG2000三种: ①标准JPEG:以24位颜色存储单个光栅图像,是与平台无关的格式,支持最高级别的压缩,不过,这种压 ...
- python time模块详解
python time模块详解 转自:http://blog.csdn.net/kiki113/article/details/4033017 python 的内嵌time模板翻译及说明 一.简介 ...
- Python中dict详解
from:http://www.cnblogs.com/yangyongzhi/archive/2012/09/17/2688326.html Python中dict详解 python3.0以上,pr ...
- Python开发技术详解(视频+源码+文档)
Python, 是一种面向对象.直译式计算机程序设计语言.Python语法简捷而清晰,具有丰富和强大的类库.它常被昵称为胶水语言,它能够很轻松的把用其他语言制作的各种模块(尤其是C/C++)轻松地联结 ...
- python/ORM操作详解
一.python/ORM操作详解 ===================增==================== models.UserInfo.objects.create(title='alex ...
- 【python进阶】详解元类及其应用2
前言 在上一篇文章[python进阶]详解元类及其应用1中,我们提到了关于元类的一些前置知识,介绍了类对象,动态创建类,使用type创建类,这一节我们将继续接着上文来讲~~~ 5.使⽤type创建带有 ...
- Python开发技术详解PDF
Python开发技术详解(高清版)PDF 百度网盘 链接:https://pan.baidu.com/s/1F5J9mFfHKgwhkC5KuPd0Pw 提取码:xxy3 复制这段内容后打开百度网盘手 ...
随机推荐
- RMAN REPORT NEED BACKUP DAYS 5
47.You issue the following command on the RMAN prompt. REPORT NEED BACKUP DAYS 5; Which statement is ...
- Jsp+Servlet实现文件上传下载(四)--下载文件
接着上一篇讲: Jsp+Servlet实现文件上传下载(三)--删除上传文件 点击打开链接 本章来实现一下下载文件功能,同时优化了一下上一章中的代码. 废话少说,上代码 ------------ ...
- git bash走代理
git config --global http.proxy 'http://127.0.0.1:7890' git config --global https.proxy 'http://127.0 ...
- virtualapp 应用启动源码分析
应用启动源码分析 在HomeActvity中的OnCreate方法会调用initLaunchpad private void initLaunchpad() { mLauncherView.setHa ...
- Maven应用常见问题
在Spring Boot项目中打包指定类为启动类 <build> <plugins> <plugin> <groupId>org.springframe ...
- Flutter——安装依赖包时,出现Waiting for another flutter command to release the startup lock
问题描述 运行 flutter packages get 时 出现 Waiting for another flutter command to release the startup lock 解决 ...
- python运算符---day04
1.python运算符 (1)算数运算符: + - * / // % ** (2)比较运算符: > < >= <= == != (3)赋值运算符:= += -= *= /= / ...
- 第一百一十二篇: JS数组Array(一)数组基本用法
好家伙, 1.数组 Array应该就是ECMAScript中最常用的类型了.ECMAScript数组跟其他编程语言的数组有很大区别. 跟其他语言中的数组一样,ECMAScript 数组也是一组有序 ...
- git修改地址三种方法
1.修改命令 git remote set-url origin [NEW_URL] 2.先删后加 git remote rm origin git remote add origin [url]3. ...
- 【Azure 事件中心】Azure Event Hub客户端遇见 Expired Heartbeat 错误
问题描述 Azure Event Hub 在消费数端中,经常性遇见 Expired Heartbeat 错误 (consumer-xxxxxxxxxxxxx-c84873c6c828e8df6c843 ...