Python POST请求参数化包含JSON主体的标题

2024-09-26 17:56:33 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在创建一个Phyton脚本来发布一个包含JSON主体的请求, 这是我需要在请求体中传递的JSON输入:

{
   "Name": "PServiceGroup125",
   "ServiceIDs": [1330,2387]
}

我能做到:

^{2}$

我想达到的目的:(让它更“OO”)

要创建一个函数(比如createBody)来创建一个python对象,然后将这个python对象转换为JSON并在请求中传递它:

def createBody(self):
    self.serviceDataProvider.setName("PTestServiceGroup %s" % time.strftime("%d%m%H%M%S"))
    self.serviceDataProvider.setServiceIDs(self.serviceDataProvider.nextItem())

我有两个问题:

这里我为对应的json名称和服务ID字段设置了“value”,我应该如何设置name字段(ServiceIDs)?(“服务ID”:[13302387])

假设“serviceDataProvider”对象已成功创建(具有Name和ServiceID值)。在

我应该如何将这个对象(serviceDataProvider)转换回JSON并在请求中传递它?在

我在看“json”模块,但不太清楚如何在这个场景中使用它

感谢任何人的帮助和建议!在

# serviceDataProvider is object of class ServiceDataProvider 

class ServiceDataProvider(URLDataProvider):
    name =""
    sid=''
    sIDs=[]
    def setName(self,name):
        self.name=name

    def getName(self):
        return self.name

    def setServiceIDs(self,sid):
        sIDs=[]
        sIDs.append(sid)

    def getServiceIDs(self):
        return self.sIDs  

Tags: 对象nameselfidjsondefserviceclass
3条回答

这一切都有点过度设计,并不是真的非常python:估计,您以前的经验是在Java中。。。在

这里根本不需要一个类,更不用说那些getter/setters了。最好将其构建为Python字典,然后可以直接将其转换为JSON。在

body = {}
body['Name'] = "PTestServiceGroup %s" % time.strftime("%d%m%H%M%S")
body['ServiceIds'] = [service_id1, service_id2]  # wherever these come from

data = json.dumps(body)

尝试查看json.dumps(将python字典结构转换为json字符串)和json.loads(与{}相反)

https://docs.python.org/2/library/json.html

Python是一种成人同意的语言,不需要setter/getter。在

如果您希望json的顺序相同,我将使用python dict或OrderedDict,因为python dict不会将键保持在插入时的相同顺序。在

相关问题 更多 >

    热门问题