Python与JSON(load、loads、dump、dumps)

 

1.Python中加载JSON

使用loads(string):作用将string类型转为dict字典或dict链表

# 加载配置,configuration_path:配置文件路径
def load_conf(configuration_path):
with open(configuration_path, 'r') as f:
string = f.read()
return json.loads(string)

使用load(file_stream):作用从文件流直接读取并转换为dict字典或dict字典链表

# 加载配置,configuration_path:配置文件路径
def load_conf(configuration_path):
with open(configuration_path, 'r') as f:
data = json.load(f)
return data

2.Python写入JSON

使用dumps():将可以转换为json对象的对象转换为String,然后可通过字符流或字节流写入文件

def save_conf(confiuration_path, pre_trans_obj):
#先用dunps转为string,然后字符流写入
#ensure_ascii=False, 减少乱码
json_string = json.dumps(pre_trans_obj, ensure_ascii=False)
with open(confiuration_path,'w') as f:
f.write(json_string)

使用dump():将可转为json对象的对象直接写入文件(将两个步骤结合成一个步骤)

def save_conf(confiuration_path, pre_trans_obj):
with open(confiuration_path,'w') as f:
json.dump(pre_trans_obj, f, ensure_ascii=False)

3.写入时中文乱码

写入时可能遇到两种中文乱码问题:

(1)显示ASCII码,情况如下:

原因是,dumps或dump编码时使用了ASCII吗编码中文,只需要在dumps或dump参数中添加参数:ensure_ascii=False,将ascii编码关闭即可。

(2)显示未知字符,情况如下:

原因是,存入的json文件默认编码为ANSI,而VsCode(IDE)以UTF-8格式打开,所以会出现这样的错误,其他的写入也可能出现类似的问题,检查是否因为这样的问题,用记事本打开文件,显示如下:(注意右下角)

解决方法:使用open函数时指定编码格式utf-8,即添加参数:encoding=‘utf-8’,完整代码如下:

def save_conf(confiuration_path, pre_trans_obj):
#先用dunps转为string,然后字符流写入
#ensure_ascii=False, 减少乱码
json_string = json.dumps(pre_trans_obj, ensure_ascii=False)
with open(confiuration_path,'w',encoding='utf-8') as f:
f.write(json_string)

注意:任何时候都应注意打开文件的格式,比如ide会默认设置为GBK等等,所以读取、写入文件都应使用统一格式。同理:在Web开发时Request和Response也是如此。

json函数的更多相关文章

  1. 【SqlServer】JSON函数

    1   概述 本篇文件将结合MSND简要分析Sqlserver中JSON函数,主要包括ISJSON,JSON_VALUE,JSON_MODIFY,JSON_QUERY. 2   具体内容 2.1  J ...

  2. [转]MySQL常用Json函数和MySQL常用字符串函数

    MySQL常用Json函数:https://www.cnblogs.com/waterystone/p/5626098.html MySQL常用字符串函数:https://www.cnblogs.co ...

  3. SQL Server之JSON 函数

    SQL Server 2005开始支持XML数据类型,提供原生的XML数据类型.XML索引及各种管理或输出XML格式的函数.随着JSON的流行,SQL Server2016开始支持JSON数据类型,不 ...

  4. HP数组转JSON函数json_encode和JSON转数组json_decode函数的使用方法

    这两个函数比较简单,我这里直接写例子,但是有一点一定要注意,json数据只支持utf-8格式,GBK格式的数据转换为json会报错! json_encode()用法: <?php$data =a ...

  5. Mysql Json函数总览 (一)

    JSON函数相关文章均来自官网,此处仅做记录,以便以后查询方便. https://dev.mysql.com/doc/refman/5.7/en/json-functions.html JSON函数参 ...

  6. MySQL常用Json函数

    官方文档:JSON Functions Name Description JSON_APPEND() Append data to JSON document JSON_ARRAY() Create ...

  7. Python基础-处理json函数

    #json是一种通用的数据类型,所有的语言都认识#json是一个字符串,json串里面都得是双引号,主要是这四个函数 #dump#dumps#load#loads import jsonnames = ...

  8. PHP Json函数不能处理中文的解决办法

    PHP5.2 新增的 json 功能是非常受欢迎的,但是经过测试发现,json_encode 对中文的处理是有问题的: 不能处理GB编码,所有的GB编码都会替换成空字符: utf8编码的中文被编码成u ...

  9. 浅谈JSON与与JS相关的JSON函数

    本文内容主要引用在微信公众号上看到的一片文章,因为自己对Json了解不是很深入,所以就整理出这篇博文与大家分享! 一. JSON是一种格式,基于文本,优于轻量,用于交换数据 1.一种数据格式 数据的传 ...

  10. MySQL的常用JSON函数

    1. JSON_SEARCH(col ->> '$[*].key', type, val) col: JSON格式的字段名 key:要搜索的col字段的key type:可以为'one'或 ...

随机推荐

  1. Spring-设计模式

    1.1开闭原则 开闭原则(open-closed principle,OCP)是指一个软件实体(如类,模块和函数)应该对扩展开放,对修改关闭.所谓的开闭,也正是对扩展和修改两个行为的一个原则. 强调用 ...

  2. 当我把ChatGPT拉进群聊里,我的朋友都玩疯了

    前言 近期ChatGPT可以说是太火了,问答.写论文.写诗.写代码,只要输入精确的prompt,他的表现总是让人惊喜.本着打不过就加入的原则.要是把ChatGPT拉入群聊中,会是怎样一番场景?说做就做 ...

  3. GaussDB(DWS)运维:导致SQL执行不下推的改写方案

    摘要:本文就针对因USING子句的书写方式可能导致MERGE INTO语句的执行不下推的场景,对USING子句的SQL语句进行改写一遍,整个SQL语句可以下推. 本文分享自华为云社区<Gauss ...

  4. 机器学习基础02DAY

    数据的特征预处理 单个特征 (1)归一化 归一化首先在特征(维度)非常多的时候,可以防止某一维或某几维对数据影响过大,也是为了把不同来源的数据统一到一个参考区间下,这样比较起来才有意义,其次可以程序可 ...

  5. Redis 线程模型

    一.概述 [1]Redis 是基于 Reactor 模式开发的网络事件处理器:这个处理器被称为文件事件处理器(file event handler),这个文件事件处理器是单线程的,所以 Redis 才 ...

  6. 安装原版Windows自动安装已经备份的驱动

    安装完Windows10后联网会自动更新驱动,除了自动更新.如果不让新安装的Windows系统自动安装驱动以外,还有自己手动安装驱动的方式.如何在安装系统过程中就让系统自己安装好驱动? 重装系统首先要 ...

  7. Vue2数据驱动渲染(render、update)

    上一篇文章我们介绍了 Vue2模版编译原理,这一章我们的目标是弄清楚模版 template和响应式数据是如何渲染成最终的DOM.数据更新驱动视图变化这部分后期会单独讲解 我们先看一下模版和响应式数据是 ...

  8. broadcom Ethernet BCM57412 驱动更新记录(dkms方式)

    一 背景 现场Dell R740xd2机器使用网卡Broadcom 57412 10Gb SFP+,固件版本22.21.06.80.bnxt_en.ko内核模块是该网卡的驱动,我们默认的驱动版本为1. ...

  9. 记一次 .NET 某手术室行为信息系统 内存泄露分析

    一:背景 1. 讲故事 昨天有位朋友找到我,说他的程序内存存在泄露导致系统特别卡,大地址也开了,让我帮忙看一下怎么回事?今天上午看了下dump,感觉挺有意思,在我的分析之旅中此类问题也蛮少见,算是完善 ...

  10. 驱动开发:内核使用IO/DPC定时器

    本章将继续探索驱动开发中的基础部分,定时器在内核中同样很常用,在内核中定时器可以使用两种,即IO定时器,以及DPC定时器,一般来说IO定时器是DDK中提供的一种,该定时器可以为间隔为N秒做定时,但如果 ...