我正在创建一个Phyton脚本来发布包含JSON BODY的请求, 这是我需要在请求正文中传递的JSON输入:
{
"Name": "PServiceGroup125",
"ServiceIDs": [1330,2387]
}
我能够做到这一点(它有效):
body = "{\"Name\": \"PServiceGroup125\",\"ServiceIDs\": [1330,2387]}"
headers = [ NVPair('Content-Type', 'application/json'), NVPair('UAMToken', uamtok) ]
response = self.httpPost(self.hostPort, self.URI, headers, body)
我想要实现的目标:(使其更多" 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字段,我应该如何设置名称字段(ServiceIDs)? (" ServiceIDs":[1330,2387])
假设" 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
答案 0 :(得分:1)
尝试查看json.dumps
(将python字典结构转换为json字符串)和json.loads
(dumps
的反面)
答案 1 :(得分:1)
这有点过度设计,并不是真的非常Pythonic:猜测,你以前的经验是用Java ...
这里并不需要任何课程,对于那些获得者/制定者来说更是如此。最好将它构建为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)
答案 2 :(得分:1)
Python是一种成人同意的语言,您不需要setter / getters。
如果你希望你的json处于相同的顺序,我会使用python dict或OrderedDict,因为python dicts不会保持键的插入顺序。