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 复制这段内容后打开百度网盘手 ...
随机推荐
- Miniconda安装和使用
Miniconda概述 Miniconda是什么? 要解释Miniconda是什么,先要弄清楚什么是Anaconda,它们之间的关系是什么? 而要知道Anaconda是什么,最先要明白的是搞清楚什么是 ...
- HTML学习---day01
1.head标签 <!DOCTYPE html> <!--文档声明H5 html--> <html lang="en"> <head> ...
- 【算法day2】复杂度和简单排序算法(2)
插入排序 有以下数组 数组:[2,4,3,6,1] 序号:[0,1,2,3,4] 第一次排序(范围0~0):2左边没东西,不动 第二次排序(范围0~1):4左边是2,4大不动 第三次排序(范围0~2) ...
- C笔记(2014-12备份)
Video1: 1-编译器对待全局变量和局部变量的差别.全局变量分配空间是在数据区,局部变量分配在代码区. (比如局部变量 int lo_var = 2;后面的 = 2;是赋值语句,被编译器转化成机器 ...
- spark conf、config配置项总结
1.structured-streaming的state 配置项总结 Config Name Description Default Value spark.sql.streaming.stateSt ...
- SemanticKernel如何基于自有数据聊天
效果 使用gpt-3.5-turbo的效果 什么是向量数据库? 向量数据库是一种专为处理高维向量数据而设计的数据库系统.与传统的关系型数据库不同,向量数据库专注于存储和查询向量数据,例如图像.音频.文 ...
- 一些shell脚本
1.判断目录是否为空 DIRECTORY=$1 #在此加上是不是目录的判断. if [ "ls -A $DIRECTORY" = "" ]; then echo ...
- springboot参数据校验
什么是Hibernate Validator? Hibernate Validator是Hibernate提供的一个开源框架,使用注解方式非常方便的实现服务端的数据校验. 官网:http://hibe ...
- DatePicker 日期选择器 split-panels 数组的时候,清空这个费劲啊,最后走的后门
这里的核心问题就是验证的时候value值不对,总是初始化的值,不论怎么设置,开始觉得是数组指针的问题,最后也不行,null也不行,组件的props都已经是null了,验证就是这么神奇,最后把this放 ...
- 开发环境篇之HALCON数据结构
开发环境篇之HALCON基础 目录 基本数据分类 图标类数据 Image(图片) Pixel:像素 Channel:通道 Domain:域 图片操作 Region(区域) Region操作 XLD(轮 ...