Python + json关键字驱动

一、json文件的编写格式规范

字典格式就用{},多个对象就用[]

# 单个对象
{ "name": "小明",
  "age": 18,
  "isMen": true,
  "like": ["唱歌","跳舞","rap","篮球"],
  "address": {
    "country": "中国",
    "city": "上海"
  }
  
}

# 多个对象
[
  {
    "name": "小明",
    "age": 18,
    "isMen": true,
    "like": [
      "唱歌",
      "跳舞",
      "rap",
      "篮球"
    ],
    "address": {
      "country": "中国",
      "city": "上海"
    }
 },
  {
    "name": "小红",
    "age": 19,
    "isMen": false,
    "like": [
      "吃饭",
      "睡觉",
      "打豆豆"
    ],
    "address": {
      "country": "中国",
      "city": "北京"
    }

]

二、json文件的读取与写入

json文件以字符串的格式读取出来:

# with open方式
with open("111.json",'r',encoding='utf-8') as f:
    params = f.read()
    print(type(params))  # str

# json.dumps方式
params = json.dumps("111.json")
print(type(params))      # str

json文件以原格式(字典或列表)的形式读取出来

with open(111.json,'r',encoding='utf-8') as f:
    params = json.load(f)
    print(type(params))    # list or dict

即json文件内部是什么类型就以什么类型读取出来

json.load(param):读取json文件数据

json.dump(param):将数据写入json文件

json对象–>字符串str :json.dumps(params)

json.dumps(param) 是将json数据对象转换为文本字符串的函数,其函数名是dump string 的缩写,意思是输出字符串,其参数param必须要是json对象

字符串str–>json对象: json.loads(params)

json.loads(param) 是将文本字符串转换为json对象的函数,其函数名是load string 的缩写,意思是加载字符串。

json文件的修改

简单案例:

# 111.json文件内容

{
"name":"张三"
"age":18
}


import json
 
 
# 获取json里面数据
def read_json_data():
    with open('111.json', 'r') as f:  
        params = json.load(f)  # 加载json文件
        params["name"] = "李四"  # 修改字段值
        print("params", params)  # 打印
    return params  
 
 
# 写入json文件
def write_json_data(params):
    
    #其中路径如果和读json方法中的名称不一致,会重新创建一个名称为该方法中写的文件名
    with open('111.json', 'w') as f:
        # 将dict写入名称为r的文件中
        json.dump(params, r)
 
 
# 调用两个函数,更新内容
data = get_json_data()    # 修改后的数据
write_json_data(data)     # 将修改后的数据写入json文件中(w模式会覆盖啊之前的数据)
 

eg:批量修改json文件某个字段的值

Python + json关键字驱动

def read_json(json_file):

    with open(json_file,'r',encoding='utf-8') as f:
        list = json.load(f)

        a = 0   # 用于定位当前遍历位置
        for dict in list:
            a = a+1   # 每遍历一次就加1
            # print(dict)

            # 第一层的语文字段值修改
            for m,n in dict.items():
                if m == '语文':
                    list[a-1]['语文'] = '100'
                # 第二层级语文字段值修改
                elif m == 'exam_result':
                    for i in n:
                        if i == '语文':
                            list[a - 1]['exam_result']['语文'] = '100'
    return list

def write_json(json_file,list):
    with open(json_file,'w',encoding='utf-8') as f:
        json.dump(list,f,ensure_ascii=False)
        # ensure_ascii=False防止出现中文乱码

# 调用上面两个函数
json_data = read_json('111.json')
write_json('111.json',json_data)

文章出处登录后可见!

已经登录?立即刷新

共计人评分,平均

到目前为止还没有投票!成为第一位评论此文章。

(0)
社会演员多的头像社会演员多普通用户
上一篇 2023年3月5日 下午2:18
下一篇 2023年3月5日 下午2:20

相关推荐