繁体   English   中英

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

[英]Why can't I decode a JSON message in the following situation?

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

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

rest.send(...)方法应该是正确的,因为我之前使用过它,并且效果很好。

发送发布请求的PC运行Linux,而接收请求的PC运行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

我的问题是:每当我尝试从第一台计算机发送发布请求时,响应都是“内部服务器错误”,而在带有服务器的计算机上,返回的错误是“ TypeError:期望的字符串或缓冲区”。 现在,我认为这可能是字符串编码的问题。

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

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

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

request.get_json()已经向我返回了一个字典,因此实际上并不需要解码_数据功能。 我已经有了不需要json.loads()的结果。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM