我正在尝试在一个请求中发送多个json对象,但我无法从中提取值。
def config(request):
print "type",type(request)
print "request in config",request.body
if request.method == 'POST':
print "In Handler"
print "Request Body is ",request.body
data = simplejson.loads(request.body)
for i in data:
print "REQUEST is ____",i
z = json.dumps(i)
rew = retResp(z)
proID = request.data["proId"]
对于请求1,可以找到proID,但对于请求2,我无法获得proID。
req1 = curl -X POST http://192.168.2.242:8080/server/config/ -d '{"confMsgReqId": 2,"proId":"123"}' -H "Content-Type: application/json"
req2 = curl -X POST http://192.168.2.242:8080/server/config/ -d '[{"confMsgReqId": 2,"proId":"123"},{"confMsgReqId": 2,"proId":"345"}]' -H "Content-Type: application/json"
答案 0 :(得分:0)
第一个请求中的数据是字典,因此您可以访问data['proID']
。
第二个请求中的数据是两个词典的列表,因此您可以访问data[0]['proID']
或data[1]['proID']
。
如果您为第一个请求以及第二个请求使用数组,您会发现它更容易。可以创建一个可以处理列表中单个元素的api,但它会使代码更复杂。
req1 = curl -X POST http://192.168.2.242:8080/server/config/ -d '[{"confMsgReqId": 2,"proId":"123"}]' -H "Content-Type: application/json"
查看代码,您可能希望访问循环内的id。不清楚为什么要手动解码json,而不是使用request.data
。
for d in request.data:
d["proId"]