美文网首页Python基础
python对json的操作总结

python对json的操作总结

作者: 正经一米八 | 来源:发表于2018-12-13 12:32 被阅读0次
Json简介
  • Json,全名 JavaScript Object Notation,是一种轻量级的数据交换格式。Json最广泛的应用是作为Ajax中服务器与客户端进行通讯的数据格式。简洁和清晰的层次结构使得Json称为理想的数据交换语言。易于人编写和阅读,同时也易于机器解析和生成,并有效地提升了网络传输效率

  • python提供了json模块,通过该模块,可以将字符串形式的json数据转化为字典,也可以将python中的字典数据转化为字符串形式的json数据。python的json模块主要包含了两个功能函数:

    • json.dumps(): 将python对象编码为json字符串

    • json.loads(): 将json字符串解码为python对象

Python对象编码为Json对象
  • 将python对象编码为json对象,使用的是json模块中的dumps和dump函数,比较常使用的是dumps函数,它们之间的区别就是dumps将python对象编码为json对象后生成的是一个字符串,而dump则是生成一个文件流,这里以dumps函数为例进行说明,具体dumps和dump的区别见另一篇博客

  • dumps()的参数说明:

    skipkeys:默认值是False,如果dict的keys内的数据不是python的基本类型(str,unicode,int,long,float,bool,None),设置为False时,就会报TypeError的错误。此时设置成True,则会跳过这类key

    ensure_ascii:默认值True,如果dict内含有non-ASCII的字符,则会类似\uXXXX的显示数据,设置成False后,就能正常显示

    indent:应该是一个非负的整型,如果是0,或者为空,则一行显示数据,否则会换行且按照indent的数量显示前面的空白,这样打印出来的json数据也叫pretty-printed json

    separators:分隔符,实际上是(item_separator, dict_separator)的一个元组,默认的就是(‘,’,’:’);这表示dictionary内keys之间用“,”隔开,而KEY和value之间用“:”隔开

    sort_keys:将数据根据keys的值进行排序

  • 实例

python_dic1 = {'username': 'jiangnanmax', 'nickname': '江', 'major': 'CS'}
json_dic1 = json.dumps(python_dic1)
print(json_dic1)
json_dic2 = json.dumps(python_dic1, sort_keys=True, indent=4, separators=(',', ': '),
                           ensure_ascii=False)
print(json_dic2)

输出如下:
{"username": "jiangnanmax", "nickname": "\u6c5f", "major": "CS"}
{
    "major": "CS",
    "nickname": "江",
    "username": "jiangnanmax"
}
  • 观察对比上面的代码和运行结果,你会发现我定义的python对象中用的都是单引号,而经过dumps函数处理后就都变成了双引号。这是因为python中的json模块不支持使用单引号,在使用dumps函数的时候你可能不会发现有这个情况,继续往下看,在使用loads函数的时候我进行了对比
Json对象解码为Python对象
  • 将json对象解码为python对象,使用的是json模块中的loads和load函数,它们之间的区别与dumps和dump之间的区别相同,具体见另一篇博客

  • 实例

python_dic1 = {'username': 'jiangnanmax', 'nickname': '江', 'major': 'CS'}
json_dic1 = json.dumps(python_dic1, ensure_ascii=False)
print(json_dic1)
print(type(json_dic1))
输出:
{"username": "jiangnanmax", "nickname": "江", "major": "CS"}
<class 'str'>
    
python_dic2 = json.loads(json_dic1)
print(python_dic2)
print(type(python_dic2))
输出:
{'username': 'jiangnanmax', 'nickname': '江', 'major': 'CS'}
<class 'dict'>
    
python_dic2 = str(python_dic2) # 把dict类型转化为str类型
print(json.loads(python_dic2))
报错:
json.decoder.JSONDecodeError: Expecting property name enclosed in double quotes: line 1 column 2 (char 1)
  • 注意:使用python标准库的json解析函数json.loads是不能使用单引号引用的json字符串的,你可以改用双引号,或者在loads之前先调用json.dumps()

相关文章

  • python对json的操作总结

    dumps()和dump()的区别,loads()和load()的区别 Json简介 Json,全名 JavaSc...

  • Gradle-Groovy 对 XML,JSON 以及文件的操作

    # Groovy 文件 对 JSON 的操作; 对 XML 的操作; 对普通文件的操作; 总结; ## 对 JSO...

  • python JSON

    一、Python 操作JSON 1.python 2.6加入了json模块。2.python的json模块 序列化...

  • python转化字符串形式的json

    在使用python对字符串形式的json进行 json.loads() 的操作时,遇到了:JSONDecodeEr...

  • 2018-09-03 day11 python 文件操作和异常捕

    1.文件操作 2.Json 3.python对json文件的支持 4.异常捕获 a.程序出现某种异常,但是不想因为...

  • json文件

    python操作json json是一种轻量级的数据交换格式,python标准库中有json模块,主要是执行序列化...

  • python读取json

    python操作json文件通过了两种方法:load():用于读取json文件;dump():用于写入json文件...

  • python操作json

    json介绍 说明:JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。...

  • Python百宝箱

    1.对Json数据的读取、存入 json数据存储为Python字典格式,python模块中有json.pickle...

  • 列表与字典的语法与基本操作

    字典的语法与操作 总结:在python对像之间的操作都是对引用的操作,不能直接对数据进行操作,比如序列不能用索引对...

网友评论

    本文标题:python对json的操作总结

    本文链接:https://www.haomeiwen.com/subject/nnbvhqtx.html