参考链接: Python str()

在写接口测试框架时,避免不了数据类型的转换,比如强制转换string类型,比如转json类型

一、str转json

str转为json格式,一定需要保证这个str的格式是json string

1.1 使用json.loads

字符串str转json对象,需要使用json模块的loads函数

import json

str1 = '{"accessToken": "521de21161b23988173e6f7f48f9ee96e28", "User-Agent": "Apache-HttpClient/4.5.2 (Java/1.8.0_131)"}'

json1 = json.loads(str1)

print(json1)

print(type(json1))

# 输出

{'accessToken': '521de21161b23988173e6f7f48f9ee96e28', 'User-Agent': 'Apache-HttpClient/4.5.2 (Java/1.8.0_131)'}

<class 'dict'>

1.2 使用eval

eval的作用:将字符串str当成有效的表达式来求值并返回计算结果

即可以通过eval可以把list、tuple、dict和string相互转化

list

str1 = "[[1,2], [3,4], [5,6], [7,8], [9,0]]"

json1 = eval(str1)

print(type(json1))

print(json1)

# 输出

<class 'list'>

[[1, 2], [3, 4], [5, 6], [7, 8], [9, 0]]

tuple

str1 = "([1,2], [3,4], [5,6], [7,8], (9,0))"

json1 = eval(str1)

print(type(json1))

print(json1)

# 输出

<class 'tuple'>

([1, 2], [3, 4], [5, 6], [7, 8], (9, 0))

dict

str1 = "{'a': 1, 'b': 2}"

json1 = eval(str1)

print(type(json1))

print(json1)

# 输出

<class 'dict'>

{'a': 1, 'b': 2}

注意: eval()可以通过运行系统的命令 比如:eval(“import(‘os’).startfile(‘notepad.exe’)”) #启动记事本程序 为了保证安全,当需要用户输入时,需要对用户的输入内容进行敏感字符检查和过滤

1.3 使用literal_eval

和eval使用方式相同,都可以将字符串str解析成list、tuple或dict,并且避免eval安全性的问题

import ast

str1 = "{'a': 1, 'b': 2}"

json1 = ast.literal_eval(str1)

print(type(json1))

print(json1)

# 输出

<class 'dict'>

{'a': 1, 'b': 2}

二、json转str

2.1 使用json.dumps

import json

json1 = {"accessToken": "521de21161b23988173e6f7f48f9ee96e28", "User-Agent": "Apache-HttpClient/4.5.2 (Java/1.8.0_131)"}

str1 = json.dumps(json1)

print(str1)

print(type(str1))

# 输出

{"accessToken": "521de21161b23988173e6f7f48f9ee96e28", "User-Agent": "Apache-HttpClient/4.5.2 (Java/1.8.0_131)"}

<class 'str'>

参数补充 json.dumps提供了一些参数,可以对转换的字符串进行特殊的处理

import json

json1 = {"accessToken": "521de21161b23988173e6f7f48f9ee96e28", "User-Agent": "Apache-HttpClient/4.5.2 (Java/1.8.0_131)"}

str1 = json.dumps(json1, sort_keys=True, indent=4, separators=(',', ':'))

str2 = json.dumps(json1)

'''

我们来对这几个参数进行下解释:

sort_keys:是否按照字典排序(a-z)输出,True代表是,False代表否。

indent=4:设置缩进格数,一般由于Linux的习惯,这里会设置为4。

separators:设置分隔符,在dic = {'a': 1, 'b': 2, 'c': 3}这行代码里可以看到冒号和逗号后面都带了个空格,这也是因为Python的默认格式也是如此,

如果不想后面带有空格输出,那就可以设置成separators=(',', ':'),如果想保持原样,可以写成separators=(', ', ': ')。

'''

2.1 使用str

可以使用强制类型转换将json格式转成str格式

json1 = {'name':'洛','age':'22'}

str1 = json.dumps(json1)

print(str1)

print(type(str1))

# 输出

{'name': '洛', 'age': '22'}

<class 'str'>

三、踩坑问题

写这篇文章主要是为了mark一个问题,在str转json时,str格式引号问题导致失败报错

看看下面这段代码

import json

str1 = "{'accessToken': '521de21161b23988173e6f7f48f9ee96e28', 'User-Agent': 'Apache-HttpClient/4.5.2 (Java/1.8.0_131)'}"

json1 = json.loads(str)

print(json1)

print(type(json1))

咋一看没啥问题,但是出现错误

json.decoder.JSONDecodeError: Expecting property name enclosed in double quotes: line 1 column 2 (char 1)

为什么呢?

字符串中,双引号在外围,单引号在内嵌,导致转换失败,可以使用json5进行处理

欢迎关注个人公众号

[转载] 【python】str与json类型转换相关推荐

  1. [转载] Python str方法

    参考链接: Python字符串方法3(strip,lstrip,rstrip,min,max,maketrans,translate,replace和expandtabs()) Python str常 ...

  2. [转载] Python str title()方法

    参考链接: Python 字符串String title 方法 目录 描述 语法 参数 返回值 使用示例 注意事项 1. 当字符串中的每个单词首字符本身就是大写 2. 当"单词"的 ...

  3. python序列化模块json和pickle

    序列化相关 1. json 应用场景: json模块主要用于处理json格式的数据,可以将json格式的数据转化为python的字典,便于python处理,同时也可以将python的字典或列表等对象转 ...

  4. Python高级编程——JSON

    Python3 JSON 数据解析 JSON (JavaScript Object Notation) 是一种轻量级的数据交换格式.它基于ECMAScript的一个子集. Python3 中可以使用 ...

  5. python知识:json格式文本;异常处理;字符串处理;unicode类型和str类型转换

    python知识:json格式文本:异常处理:字符串处理:unicode类型和str类型转换 参考文章: (1)python知识:json格式文本:异常处理:字符串处理:unicode类型和str类型 ...

  6. python读取路径中字符串_python实现提取str字符串/json中多级目录下的某个值

    字符串多级目录取值: 比如说: 你response接收到的数据是这样的. 你现在只需要取到itemstring 这个字段下的值.其他的都不要! 思路就是:字符串是个json格式(或转为json格式), ...

  7. 29-30Python多线程、多线程、使用threading模块创建线程;JSON数据解析、编码为JSON类型转换对应表、Python类型转换对应表、json.dumps与json.loads

    29Python3多线程 多线程类似于同时执行多个不同程序,多线程运行有如下优点: 使用线程可以把占据长时间的程序中的任务放到后台去处理. 用户界面可以更加吸引人,比如用户点击了一个按钮去触发某些 ...

  8. python层级抓取_python实现提取str字符串/json中多级目录下的某个值

    字符串多级目录取值: 比如说: 你response接收到的数据是这样的. 你现在只需要取到itemstring 这个字段下的值.其他的都不要! 思路就是:字符串是个json格式(或转为json格式), ...

  9. python str转json_Python中如何将一个字符串转换为json格式呢?

    摘要: 下文讲述Python中字符串转换为json格式的方法分享,如下所示: json是各大语言都支持的一个对象,在web API开发中,我们经常使用json格式进行数据传输, 那么在Python中, ...

最新文章

  1. 华为云王红新_Veritas与华为云签署合作谅解备忘录推进云数据安全进阶
  2. linux下汇编实例
  3. Qt Creator使用调试助手
  4. ios俩个APP之间跳转、传值
  5. 程序员们的三高:高并发、高性能、高可用
  6. 天池 在线编程 区分用户名(哈希)
  7. 搭载敏捷飞天底座,阿里云专有云敏捷版全面升级
  8. Python实现(百度地图API)地理编码与逆地理编码
  9. PHP闭包中使用use关键字
  10. C++:vector二维数组初始化
  11. SVN安装不成功卸载不干净后如何重装SVN和右键显示SVN
  12. word 文档规范,比如标题、正文的字号
  13. 计算机辅助汽车人机工程未来挑战,计算机辅助人机工程设计的虚拟人分析-机械制造及其自动化专业论文.docx...
  14. Windows Server 2012 R2 安装补丁KB2999226提示此更新不适合用于计算机
  15. 【mmdetection】测试单张图像
  16. 2022年个人总结 - 黑云压城城欲摧
  17. 免费数据 | CnOpenData国际足球比赛结果数据
  18. 如何删掉顽固文件和文件夹
  19. 计算机画大熊猫教案,幼儿园大班《画熊猫》教案
  20. DFS(深度优先搜索)算法实现

热门文章

  1. Linux下Tomcat指定JDK和设置内存大小
  2. 将WinServers2019打造成家用系统
  3. android电子书控件,Android控件大全.pdf
  4. android serviceconnection unbind流程,Android Service 再次 unbindSrvice 时的问题
  5. Linux查看分析任务计划命令,详述Linux计划任务的 at和crontab的命令 以及如何查看crontab日志...
  6. Qt中实现鼠标作图并且控制每一笔粗细和颜色的方法
  7. UnityShader1:渲染流水线
  8. 牛客网暑期ACM多校训练营(第三场): E. Sort String(KMP)
  9. bzoj 5016: [Snoi2017]一个简单的询问(莫队)
  10. 拆点并查集(poj 1182: 食物链)