json连接request.post python

时间:2015-07-01 04:31:02

标签: python json

我正在测量传感器的温度和湿度。 我希望然后将度量作为json字符串发布到服务器。 我正在使用python脚本。

为了优化,我想将json字符串分组并发布它们。

我的代码是这样的:

current_time = time.localtime()[0:6]
date = dateformat % current_time[0:6]
temp = str(round(temp, 1))
hum = str(round(hum, 1))

lastest_measure = {'UID': uuid, 'date': date, 'temperature': temp, 'humidity': hum}
r = requests.post(url, data=json.dumps(lastest_measure), headers=headers)
print r

>>> response 200: Good !

但我无法将lastest_measure连接到grouped_measure

我尝试与

连接
grouped_measure = dict(group_measure.items() + lastest_measure.items())

但它给了我一个错误:

  

“AttributeError:'dict'对象没有属性'item'”

我尝试使用所有度量创建一个字符串(格式正确,即:[{...},{...}, ...] 然后使用json.dumps

r = requests.post(url, data=json.dumps(grouped_measure), headers=headers)

但我收到错误500(因为格式不包括所有值之间的'')

所以我的问题是如何以resquest.post方法的正确格式连接2个词典? (这是一种方法???)

提前致谢! 干杯, 垫

2 个答案:

答案 0 :(得分:1)

问题是,POST请求期望JSON格式,它本质上类似于Python字典,只接受特定类型并且要求键是字符串。

这意味着,如果您正在编写时间序列,并且在许多字典(如Python字典)的字典中具有相同的键,它将覆盖给定的值。简而言之,对于接受JSON数据的网站,使用单个POST请求无法解决问题。

要解决此问题,您可以使用迭代。

这是一个随意的例子,但适合你的例子:

步骤1:获取字典(已有字典)并从中创建Python列表。

# arbitrary case
dicts = []
for num in range(20):
    mydict = {i: i**num for i in range(50)}
    dicts.append(mydict)

现在我有了我的词典,然后我可以迭代它们发布请求。

import json
# iterate
for mydict in dicts:
    json_string = json.dumps(mydict)
    r = requests.post(url, data=json_string, headers=headers)

现在,如果您可以定义词典并同时发布请求,则此代码将更加高效。

答案 1 :(得分:0)

我得到了这个解决方案:

data = [ ]
def add_DataSet(field1, field2, field3, field4):
     global data
     data.append({"field1":var1, "filed2":var2, "field3":var3, "field4":var4})

然后

add_DataSet(field1, field2, field3, field4)

完美配合
r = requests.post(url, data=json.dumps(data), headers=headers)