python (json字符串和真正json互相转换问题,以及各种读取方式,单个,整个...)

#案例:
# 1.json字符串和真正json互相转换问题!
# 2.从文件中读取一整个json!
'''
真正json/dict: a={"id":1,"name":"张三"}
json字符串:本质是字符串,a='{"id":1,"name":"张三"}'
'''


import json

#String json.dumps(Dict data);#用于把字典/json格式数据转换为json字符串
json1={"id":1,"name":"张三"}
json_str1=json.dumps(json1).encode('UTF-8').decode('unicode_escape')
print(json_str1)


print("---------------------------------------------")

#Dict json.loads(String json_str);#用于把json字符串转换为json/字典
# json_str2="{'id':1,'name':'张三'}"
json_str2='{"id":1,"name":"张三"}' #OK
json2=json.loads(json_str2,encoding="utf-8")
print(json2)


#从某文件中读取一整个json
json3=json.load(open("C:/A/1.txt","r",encoding="utf-8"))
print(json3)

====================================================

#技术:从1个文件中读取N个json数据(1行一个json),并传给某请求
'''
案例:
    有个接口:post http://abc.com/user/login
        请求参数(json):是从C:/B/2.txt中的每一行
'''
import json,requests
#从文件C:/B/2.txt中读取所有的json
fp=open("C:/B/2.txt","r",encoding="UTF-8")
#遍历每一行数据
for line in fp:
    line=line.rstrip()
    # 把字符串类型的line转换为Dict(字典)类型
    data=json.loads(line,encoding="utf-8")
    getPost_Url=requests.post(url="http://abc.com/user/login",json=data)
    fp.close()

============================================

# 技术:从N个文件中读取N个json数据(1文件一个json),并传给某请求!
import os,sys,json,requests
dir="C:/A"
#获取C:/A目录下所有的文件名
fileName=os.listdir(dir)
#遍历每个文件
for file in fileName:
    data=json.load(open(dir+"/"+file,"r",encoding="utf-8"))
    print(data)
    # 发请求
    # response = requests.post(url="http://abc.com/user/login", json=data)

==========================================================

#技术:把接口的响应数据写入到文件中:所有记录写到一个文件中,一个记录对应文件中的一行!
#案例:把GET http://127.0.0.1:8000/api/departments/接口的获取到的N个学院信息写入到1个文件!
import requests
import json
#发请求
response=requests.get(url="http://127.0.0.1:8000/api/departments/")
#获取响应实体
response_body=response.json()
#获取所有学院
allXueYuan=response_body["results"]
#遍历这些学院
for x in allXueYuan:
    #把字典类型的x转换为字符串类型
    x_str=json.dumps(x).encode('utf-8').decode('unicode_escape')

    #把字符串x_str写入到文件中
    with open('C:/B/2.txt', 'a', encoding='utf-8') as f:
        f.write(x_str)
        f.write("\n")

==================================================

#技术:把接口的响应数据写入到文件中:每个记录写一个文件。总共N个文件!
#案例:把GET http://127.0.0.1:8000/api/departments/接口的获取到的N个学院信息写入到N个文件!
import requests
import json
#发请求
response=requests.get(url="http://127.0.0.1:8000/api/departments/")
#获取响应实体
response_body=response.json()
#获取所有学院
allXueYuan=response_body["results"]
#遍历这些学院
i=1
for x in allXueYuan:
    #把字典类型的x转换为字符串类型
    x_str=json.dumps(x).encode('utf-8').decode('unicode_escape')
    #把字符串x_str写入到文件中
    with open('C:/A/'+str(i)+".txt", 'a', encoding='utf-8') as f:
        f.write(x_str)
        f.write("\n")
        i=i+1

===============================================

#假设该变量是某接口的响应实体
response_body=\
{
    "id":1,
    "name":"zansan",
    "data1":
    {
        "msg":"哈哈",
        "token":"asdsadsads"
    },
    "data2":
    [
        {
            "key":"K001",
            "stuName":"张三"
        },
        {
            "key": "K002",
            "stuName": "李四"
        },
        [
            1,2,3
        ]
    ]
}

#获取id=1
print(response_body["id"])
#获取msg="哈哈"
print(response_body["data1"]["msg"])

#获取data2
data2=response_body["data2"]
stu1=data2[0]
stu2=data2[1]
stu1_name=stu1["stuName"]
print(stu1_name)

a=data2[2][1]
print(a)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值