Python读写JSON文件、解析JSON

JSON(JavaScript Object Notation)是一种轻量级的数据交换格式;本文将通过多个例子讲解在Python中如何读写json文件,如何解析JSON内容,以及如何将JSON对象与Python字典相互转换;

在Python中,有一个名为json的内置库可用于处理JSON数据;

使用Python读取和解析JSON文件

测试数据:

{
    "db_config":{
        "server":"127.0.0.1:3306",
        "db_name":"mydb"
    },
    "sys_config":{
        "listen":"127.0.0.1:8080"
    }
}

将这段JSON数据保存为test.json文件;

json库有两个方法可用于加载JSON文件或JSON内容,返回的是一个Python字典:

  • json.load(file_object) - 该方法传入一个文件对象;
  • json.loads(json_string) - 该方法传入JSON字符串

json.load()用法:

import json

with open('test.json') as fp:
    #该方法传入一个文件对象
    data = json.load(fp)
    
print(data['db_config']['server'])

输出:

127.0.0.1:3306

json.loads()用法:

import json

json_string = """
{
    "db_config":{
        "server":"127.0.0.1:3306",
        "db_name":"mydb"
    },
    "sys_config":{
        "listen":"127.0.0.1:8080"
    }
}
"""

data = json.loads(json_string)
print(data['sys_config'])

输出:

{'listen': '127.0.0.1:8080'}

Python字典转换为JSON

可使用json.dumps()方法将Python字典转换为json字符串;

语法:json.dumps(dict,indent)

  • dict - Python字典
  • indent - 缩进单位

示例:

import json

mydict = {
        'class1':{
            'a': 1,
            'b': '123'
        }
    }

json_string = json.dumps(mydict) #没使用缩进
print(json_string)

输出:

{"class1": {"a": 1, "b": "123"}}

使用缩进:

json_string = json.dumps(mydict,indent=4)#缩进单位 4

输出:

{
    "class1": {
        "a": 1,
        "b": "123"
    }
}

Python将JSON写入文件

你可通过上文中的json.dumps()方法将得到json字符串通过自己的方法写入文件即可;也可以使用json.dump()方法来写入到文件;

示例代码:

import json

mydict = {
        'class1':{
            'a': 1,
            'b': '123'
        }
    }
with open('out.json','w') as fp:
    json.dump(mydict,fp,indent=4)

上例程序将在当前目录打开一个名为out.json的文件,如果文件不存在,则创建该文件;json.dump()会将Python字典转换为JSON字符串,并保存到out.json文件中。

原创内容,如需转载,请注明出处;

本文地址: https://www.perfcode.com/p/python-program-read-write-and-parse-json.html

分类: 计算机技术
推荐阅读:
Linux删除所有与扩展名不匹配的文件 在Linux系统下,当你想删除某个文件夹下没有指定扩展名的所有文件时,你可以使用这条命令来实现,它将会删除目录下所有与扩展名不匹配的文件:
Python zip()函数 zip() 函数用于将多个可迭代对象中的元素按顺序一一对应打包成一个个元组,返回一个可迭代的 zip 对象。
Rust:formatting specifier missing 错误解决方法 编译Rust程序时,出现 formatting specifier missing 错误,导致该错误的原因可能是错误的使用println!宏;
Python this模块的加密原理 this模块的代码(this模块位于Python安装目录/lib下)。定义了2个变量;字符串s和字典d(被定义两次);s很明显是一段密文,d则是密码字典,key和value对应的是密文和原文;chr((i+13)%26 +c) 则是加密算法,其原理是通过向字典d写入KEY为字符A~Z,VALUE为加密后的字符。然后通过字典遍历的方法,匹配出正确的字符。
Golang生成一个整数范围内的随机整数 在Golang中,可以通过math/rand包的Intn(n)函数生成一个0~n之间的随机整数,碰到100~200、-10~10这样的整数段却无能为力了;
C语言isgraph()函数:判断字符是否可打印(且不是空格) isgraph()是C语言标准库中的一个函数,用于检查一个字符是否可以打印且不是空格字符;