【问题标题】:Convert Python dict to Javascript Object and access the key and value将 Python dict 转换为 Javascript 对象并访问键和值
【发布时间】: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


【解决方案1】:

所以我终于解决了这个问题,首先你必须通过 socketemit 从 python 端使用 json.dumps(foo),然后将其转换为 Javascript 对象 - 你必须再次使用 json.parse(foo)。然后它位于一个对象字面量中,可以使用 for 循环访问它以获取值和键!像这样

  for (var i in foo) {
            var key = i;
            var val = foo[i];
}

【讨论】:

    猜你喜欢
    • 2022-08-18
    • 2018-01-08
    • 2021-04-18
    • 2021-10-10
    • 2018-11-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-10
    相关资源
    最近更新 更多