为什么我不能在以下情况下解码JSON消息?

时间:2015-05-20 15:45:45

标签: python json flask

我正在尝试通过帖子请求将JSON消息从计算机发送到另一台计算机。 发送消息的脚本如下:

message = {'station':'turn on'}
res = rest.send( 'POST', server_addr + "/newstation", json.dumps(message), {'Content-Type': 'application/json'} )

rest.send(...)方法应该是正确的,因为我之前使用它并且它工作正常。

发送post请求的PC运行Linux,而接收运行Win 8,如果这意味着什么。

在接收机器上,我有以下内容:

@app.route('/newstation', methods = ['POST'])
def new_station ():
    j_data = request.get_json()
    d = decode_data(j_data)

其中decode_data(j_data)是以下

def decode_data(j_data):
    d = json.loads(j_data)
    return d

我的问题是:每当我尝试从第一台机器发送post请求时,响应是“内部服务器错误”,而在服务器的机器上,返回的错误是“TypeError:expected string or buffer”。 现在我认为这可能是字符串编码的问题。

接收到post请求,我可以毫无问题地打印json内容,当我尝试解码时会出现问题。

1 个答案:

答案 0 :(得分:1)

我解决了这个问题,我当然是个错误(当然)。我误解了文档。

@app.route('/newstation', methods = ['POST'])
def new_station ():
   j_data = request.get_json()
   #d = decode_data(j_data)

request.get_json()已经返回了一个字典,因此实际上并不需要decode_data函数。我已经有了结果而不需要json.loads()。