python requests post多层字典的方法

  • Post category:Python

当我们使用Python中的Requests库中的POST方法向服务器发送数据时,有时需要同时发送多层嵌套的字典数据。此时,我们需要对POST方法传入的data参数进行特殊的处理。

下面是如何处理多层字典数据的步骤:

1.首先要明确要发送的数据格式,假设是以下三层嵌套的字典:

data = {
    "name": "Tom",
    "age": 18,
    "address": {
        "province": "Guangdong",
        "city": "Shenzhen",
        "district": "Nanshan"
    }
}

2.使用Python中的json.dumps()方法将字典转换为JSON格式的字符串:

import json

data_str = json.dumps(data)

3.将data_str作为POST方法的参数传入即可:

import requests

url = "http://www.example.com"
headers = {"Content-Type": "application/json"}
response = requests.post(url, data=data_str, headers=headers)

示例1:发送JSON格式数据到服务器

import requests
import json

url = "http://www.example.com"
headers = {"Content-Type": "application/json"}

data = {
    "name": "Tom",
    "age": 18,
    "address": {
        "province": "Guangdong",
        "city": "Shenzhen",
        "district": "Nanshan"
    }
}

data_str = json.dumps(data)
response = requests.post(url, data=data_str, headers=headers)

示例2:上传文件和JSON格式数据到服务器

import requests
import json

url = "http://www.example.com"
headers = {"Content-Type": "application/json"}

data = {
    "name": "Tom",
    "age": 18,
    "address": {
        "province": "Guangdong",
        "city": "Shenzhen",
        "district": "Nanshan"
    }
}

files = {"file": open("test.txt", "rb")}
data_str = json.dumps(data)
response = requests.post(url, files=files, data=data_str, headers=headers)

在以上两个示例中,我们都使用了json.dumps()方法将字典转化为JSON格式的字符串,并传入POST方法的data参数中。第二个示例中,除了JSON格式的数据外,还有一个”files”键,它的值是一个由open()函数返回的文件对象,可以上传文件到服务器。