gpt4 book ai didi

javascript - 在 Python 2.7 中使用 json.loads 返回 unicode 对象而不是 dict

转载 作者:行者123 更新时间:2023-11-30 11:58:52 26 4
gpt4 key购买 nike

我在将 JSON 数据解析为一个我无法理解的字典时遇到了问题。

我正在从 JavaScript 连接到 Tornado websocket 并发送以下数据,输入文本字段:

{"action": "something"}

我将它发送到 websocket 的方式是:

sock.send( JSON.stringify( $('textfield').value ) );

现在在 Python 中,我的 WebsocketHandler::on_message() 中有以下代码:

print("Message type: " + str(type(message)) + ", content: " + message)

parsed_message = json.loads(message)

print("Parsed message type: " + str(type(parsed_message)) + ", content: " + parsed_message)

输出结果是:

Message type: <type 'unicode'>, content: "{\"action\":\"START_QUESTION_SELF\"}"
Parsed message type: <type 'unicode'>, content: {"action":"START_QUESTION_SELF"}

现在我希望第二条打印的消息是 dict 并且我无法弄清楚为什么这不起作用。任何帮助将不胜感激。

最佳答案

它不起作用,因为当你执行 sock.send(JSON.stringify('{"action": "something"}')); 你发送这个 "{\“ Action \”:\“某事\”}”

当您打印消息时,您可以验证它是否确实包含引号。因此,它被 json.loads 解释为字符串。

最简单的解决方案是再次调用 json.loads:

parsed_message = json.loads(json.loads(message))

但是,您真的应该考虑将文本字段值转换为对象,然后在其上使用 JSON.stringify。像这样:

sock.send(JSON.stringify(JSON.parse( $('textfield').value)));

关于javascript - 在 Python 2.7 中使用 json.loads 返回 unicode 对象而不是 dict,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37180942/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com