【发布时间】:2019-07-23 07:10:15
【问题描述】:
试图仅访问 JSON 对象的值或键,但它显示为未定义。
尝试json.parse,但结果相同。
now = datetime.now()
date_time = now.strftime("%m/%d/%Y, %H:%M:%S")
print(date_time)
chatrooms[chatroom][username][date_time] = message
message = json.dumps(chatrooms[chatroom][username])
emit("append messages", message, broadcast=True)
socket.on('append messages', data => {
const li = document.createElement('li');
// parse the messages;
var response = jQuery.parseJSON(data)
message = `${response.date_time}`;
已发送的消息,但我未定义。我尝试摆脱 jQuery Parse,但它不起作用。
【问题讨论】:
-
1.将示例 python 输出添加到问题 2. 无需解析
data,它已经是一个对象 3.message = response.date_time; -
你检查
data了吗?它是否包含有效的 json、整个 json 而除了 json 什么都没有? -
@ChrisG,这是 json.dump {"07/23/2019, 08:53:53": "hi"} 我删除了解析后的输出,但它仍然显示为未定义。我在 python 中的 dict 嵌套如下 {'Chatroom': {'Username': {'07/23/2019, 08:53:53': 'hi'}}}
-
@Thomas,json 是有效的,但它在 json 字符串中。这意味着如果我做了 response[0] 它将解释大括号...我无法仅获得双引号内的数据。
-
好的,这听起来像是您已经对数据进行了两次编码。我不熟悉代码的python方面。难道
emit()已经对传递的有效载荷进行了编码?如果您尝试emit("append messages", chatrooms[chatroom][username], broadcast=True)会发生什么?旁注:JSON 总是 一个字符串;这是一种序列化格式。您可能想到的是 Object 字面量。
标签: javascript python json