你真的理解json数据的格式么?

coolpython

共 1187字,需浏览 3分钟

 · 2021-11-07

1. pythonz 字典与json字符串

在web服务领域,系统之间传递数据最常用的格式便是json,他很容易理解,因为绝大多数场景下,你见到的json数据都和字典是一样的。有时,你复制一段json数据就可以把它当做字典来使用,至少在python中是这样的,然而它们之间并不能划等号,下面的代码将向你展示他们之间的不同

import json

data = {'text': "a/b/c", 3:4}
res = json.dumps(data)
print(res)


data2 = json.loads(res)
print(data2)

程序输出结果

{"text": "a/b/c", "3": 4}
{'text': 'a/b/c', '3': 4}

python字典可以使用json.dumps方法转为json字符串,但这个转换后的字符串却不一定能够使用json.loads方法转为python字典,原因在于,json字符串里,所有的key都必须是字符串。

2. json的格式

json数据,从形式上看有两种,一种是大括号形式的object,一种是中括号形式的数组。

对于这两种形式的json数据,我们很难用简练的语言进行描述,但画图却可以将json数据的定义清晰的表达出来,先来看object 形式的json数据

看懂这张图并不难

  1. object 形式的json以{ 开头,以} 结尾

  2. 图中形成了一个闭环,这表示这条闭环上的元素可以重复

  3. 大括号里的元素,使用逗号分隔

  4. 每个元素都是string : value 的形式,json数据里的key必须是字符串

  5. 大括号里也可以一个元素都没有

  6. 图中有很多whitespace,可以理解为空格,但这个空格实际使用时可有可无

再来看一下数组形式的json数据 

  1. 数组形式的json以[ 开始,以 ] 结束

  2. 中括号内元素以逗号分隔

  3. 中括号里可以没有任何元素

  4. 中括号里的元素是value

两张图里都出现了value,再将value的定义理解清楚,那么json数据的格式也就了然了

  1. value的值可以是string,number,object,array,true,false,null

  2. value前后也有whitespace

由于value可以是object和array,因此json可以嵌套很多层,这看起来和字典真的非常相似,关于json,其实还有很多细节的地方可以研究,不过掌握到这里对于我们认识理解json就已经足够了,如果你想继续深入研究,推荐你看这篇文章   https://www.json.org/json-en.html 

浏览 37
点赞
评论
收藏
分享

手机扫一扫分享

举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

举报