Python-字符串str和json格式的转换「建议收藏」

Python-字符串str和json格式的转换「建议收藏」str转jsonstr转换为json格式,前提一定需要保证这个str的格式和json是一致的,即左边最外层是大括号,右边的最外层是大括号。如果不一致,推荐用正则进行拆分至和json格式一致1.通过json.loads进行转换importjsonstr='{"key":"wwww","word":"qqqq"}’j=json.loads(str)print(j)pri…

大家好,又见面了,我是你们的朋友全栈君。

我是精神抖擞王大鹏,不卑不亢,和蔼可亲~
计算机硕士,目前小米大数据开发。日常会分享总结一些自己面试实际问题的回答,欢迎一起讨论。
公众号:diting_dapeng

str转json

str转换为json格式,前提一定需要保证这个str的格式和json是一致的,即左边最外层是大括号,右边的最外层是大括号。如果不一致,推荐用正则进行拆分至和json格式一致
1. 通过json.loads进行转换

import json
str = '{"key": "wwww", "word": "qqqq"}'
j = json.loads(str)
print(j)
print(type(j))

但是值得注意的是,json中内部数据需要用双引号来包围,不能使用单引号,如刚才的写法,如果写成这样,就会发生错误:

str = “{‘key’: ‘wwww’, ‘word’: ‘qqqq’}“
j = json.loads(str)

2. 通过eval
eval函数的官方解释为:将字符串str当成有效的表达式来求值并返回计算结果。
即通过eval可以把list,tuple,dict和string相互转化,例如:

a = "[[1,2], [3,4], [5,6], [7,8], [9,0]]"
 
b = eval(a)
 
type(b)
list
 
a = "{1: 'a', 2: 'b'}"
 
b = eval(a)
 
type(b)
dict 
a = "([1,2], [3,4], [5,6], [7,8], (9,0))"
 
b = eval(a)
 
type(b)
tuple

同样,值得注意的是,eval()可以通过运行系统的命令,如:

eval("__import__('os').startfile('notepad.exe')") #启动记事本程序

那么为了保证安全,当需要用户输入时,可以对用户输入进行敏感字符检查和过滤

3. literal_eval

和eval用法相同,都可以将字符串str解析成list,tuple,dict,而且避免了eval的安全性的问题

import ast 

a = "{1: 'a', 2: 'b'}"
 
b = ast.literal_eval(a)
 
type(b)
dict

json转str

使用json.dumps的方法,可以将json对象转化为字符串

data = {'name':'wjp','age':'22'}
data = json.dumps(data)

如有错误,欢迎指正

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/131993.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • Linux日志管理「建议收藏」

    Linux日志管理「建议收藏」一、日至来源日至由程序产生,存储在内存条中1、日志的查看>/nar/log/messages                ##清空目录内容cat/var/log/messages              ##查看日志systemctlstartrsyslog.service    ##加载日志收集/var/log/secure         …

  • L2-014 列车调度 (25 分)详解

    L2-014 列车调度 (25 分)详解火车站的列车调度铁轨的结构如下图所示。两端分别是一条入口(Entrance)轨道和一条出口(Exit)轨道,它们之间有N条平行的轨道。每趟列车从入口可以选择任意一条轨道进入,最后从出口离开。在图中有9趟列车,在入口处按照{8,4,2,5,3,9,1,6,7}的顺序排队等待进入。如果要求它们必须按序号递减的顺序从出口离开,则至少需要多少条平行铁轨用于调度?输入格式:输入第一行给出一个整数N…

  • linux挂载磁盘教程「建议收藏」

    linux挂载磁盘教程「建议收藏」本文中的磁盘/dev/sdb为笔者测试服务器上的命名,在您的服务器中可能是/dev/xdb、/dev/vdb、/dev/xvdb等等请根据实际情况进行修改.1、创建挂载目录mkdir-p/www2、确认是否没有分区的磁盘,如下图,没有分区的磁盘是/dev/sdb,在您的服务器中可能是/dev/vdb,请注意按照实际名称修改fdisk-l3、为磁盘分区,若已分区,可跳过fdisk/dev/sdb4、输入n开始创建分区5、输…

  • 零基础入门STM32编程(二)

    零基础入门STM32编程(二)前情回顾上篇文章初步认识了STM32,了解了STM32的分类及型号命名规则,本篇内容继续STM32串口编程入门学习。一走进STM321.1STM32系列STM32单片机分为四类五种,四类介绍参见上一篇文章,本文仅阐述五个系列,分别为:STM32F0系列是针对8位和16位微控制器的32位MCU替代产品,对于工程人员来说非常有吸引力,他们希望其产品平台不会过时,并可围绕工业标准ArmCortex-M0内核进行标准化开发。 STM32G0系列是基于ArmCortex-M0+核心的新..

  • clion ubnutu激活码-激活码分享2022.02.18

    (clion ubnutu激活码)最近有小伙伴私信我,问我这边有没有免费的intellijIdea的激活码,然后我将全栈君台教程分享给他了。激活成功之后他一直表示感谢,哈哈~https://javaforall.cn/100143.htmlIntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,上面是详细链接哦~LGWS…

  • navicate 15.0.23 激活码(最新序列号破解)[通俗易懂]

    navicate 15.0.23 激活码(最新序列号破解),https://javaforall.cn/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号