博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
str与json.dumps的区别
阅读量:6860 次
发布时间:2019-06-26

本文共 2068 字,大约阅读时间需要 6 分钟。

本文首发于

我们常用json文件存储数据,在写入文件前,通常使用json.dumps函数将python对象转化为字符串再写入文件。但是str函数也可以将字典、列表等转化为字符串,那么我们在写入json文件时可不可以不import json,直接用str来做呢?答案时不可以的。

我们来看几个例子

>>> import json>>> str([1,2])'[1, 2]'>>> str([1,  2])'[1, 2]'>>> json.dumps([1,2])'[1, 2]'>>> json.dumps([1,  2])'[1, 2]'>>> json.dumps([1, 2]) == str([1, 2])True复制代码

从上面例子可以看出

  • strjson.dumps都不是原模原样地输出我们输入的内容,会自动将列表逗号后面只加一个空格
  • [1, 2]这个例子上,二者是一样的

下面我们来看几个不一样的例子 1.引号

>>> str(['a', 'b'])"['a', 'b']">>> json.dumps(['a', 'b'])'["a", "b"]'>>> json.dumps(['a', 'b']) == str(['a', 'b'])False>>> str({
'a': 1})"{'a': 1}">>> json.dumps({
'a': 1})'{"a": 1}'>>> json.dumps({
'a': 1}) == str({
'a': 1})False复制代码

str转化后的字符串中,引号是用单引号,而json.dumps是双引号,这在字典和列表中都是这样

2.布尔值(True False

>>> str([True, False])'[True, False]'>>> json.dumps([True, False])'[true, false]'>>> json.dumps([True, False]) == str([True, False])False复制代码

str转化后的字符串中,True是首字母大写的,而json.dumps将所有字母都转化为了小写

3.None

>>> str([1, None])'[1, None]'>>> json.dumps([1, None])'[1, null]'>>> json.dumps([1, None]) == str([1, None])False复制代码

str转化后的字符串中,None还是用None表示,而json.dumps则用null表示。

我们都知道,使用json.dumps的目的是将python对象转化为字符串,以存储到文件之中。之后需要数据的时候还要从文件中读取,再用json.loads转化为python对象,类似下面这个过程

>>> m = ['a', 'b']>>> n = json.dumps(m)>>> n'["a", "b"]'-----存储入文件,读取文件----->>> p = json.loads(n)>>> p.append('c')>>> p['a', 'b', 'c']复制代码

但是我们如果用str转化成的字符串,则无法再转化为python对象

>>> m = ['a', 'b']>>> n = str(m)>>> n"['a', 'b']">>> json.loads(n)Traceback (most recent call last):  File "
", line 1, in
File "C:\Program Files\Anaconda3\lib\json\__init__.py", line 319, in loads return _default_decoder.decode(s) File "C:\Program Files\Anaconda3\lib\json\decoder.py", line 339, in decode obj, end = self.raw_decode(s, idx=_w(s, 0).end()) File "C:\Program Files\Anaconda3\lib\json\decoder.py", line 357, in raw_decode raise JSONDecodeError("Expecting value", s, err.value) from Nonejson.decoder.JSONDecodeError: Expecting value: line 1 column 2 (char 1)复制代码

也就是说str转化出的字符串格式不符合json规范,无法完成json格式字符串与python对象之间的转换。

参考资料:

欢迎关注我的知乎专栏

专栏主页:

专栏目录:

版本说明:

转载地址:http://nnxyl.baihongyu.com/

你可能感兴趣的文章
6.cadence原理图下[原创]
查看>>
Javascript图片裁切
查看>>
Android -- Serializable和Parcelable需要注意的
查看>>
Apache -- phpmyadmin导入文件过大
查看>>
吐槽一下Activiti用户手册和一本书
查看>>
解读Web Page Diagnostics网页细分图
查看>>
Enterprise Solution 管理软件开发框架流程实战
查看>>
hibernate缓存机制详细分析
查看>>
Android 动画效果 及 自定义动画
查看>>
基于Servlet、JSP、JDBC、MySQL登录模块(包括使用的过滤器和配置)
查看>>
Python将文本生成二维码
查看>>
统计学习那些事
查看>>
XLT架构图(自己 画的)
查看>>
GitHub Top 100 简介
查看>>
C语言中链表任意位置怎么插入数据?然后写入文件中?
查看>>
文档对象模型DOM(二)
查看>>
loading.io一个loading图标网站,跟大家分享
查看>>
Hadoop之——CentOS构造ssh否password登录注意事项
查看>>
云计算的设计模式(三)——补偿交易模式
查看>>
ACM-凸多边形的计算几何——hrbust1429
查看>>