【问题标题】:Python dict to Ruby hash through JSON and Rails Action Cable web socketPython dict 通过 JSON 和 Rails Action Cable web socket 到 Ruby 散列
【发布时间】:2020-05-19 13:29:24
【问题描述】:

我很难通过网络套接字(使用 Action Cable)将信息从 python 脚本正确传递到 rails 应用程序。

我想像这样在 python 字典中使用输入信息:

message = {
    'command':"subscribe",
    'identifier':{
            'channel': 'RaspChannel',
            'rasp_local_id': '1'
        }
    }

然后将其转换为 JSON,通过 Action Cable 设置的网络套接字,然后在服务器端解析为 ruby​​ 哈希。

出于某种原因,我只是通过套接字发送一个纯字符串来使其工作:

'{"command":"subscribe","identifier":"{\\"channel\\":\\"RaspChannel\\", \\"rasp_local_id\\": \\"1\\"}"}'

但我无法通过发送 json.dumps(message) 使其工作,即使它返回的东西对我来说看起来不错:

{"command": "subscribe", "identifier": {"channel": "RaspChannel", "rasp_local_id": "1"}}

我想 action cable 协议在它作为输入接收的 json 字符串上使用了经典的 ruby​​ JSON.parse 方法,并且由于某种原因,它总是抛出解析错误,除非我使用我上面提到的纯字符串。

但是,由于我想让消息更复杂,如果我能从一开始就让它与实际的 Python 字典一起使用会更好。

知道我缺少什么吗?

【问题讨论】:

  • 了解 ruby​​ 中字符串的 as_json 和 to_json 方法。它可能会有所帮助
  • 我调查过了,但实际上,我在 ruby​​ 方面做不了太多事情,因为 action cable server 抛出来自 Python 编码的 JSON 的错误
  • 我对 python 的了解非常有限,但是以 json 格式发送可能会有所帮助吗? stackoverflow.com/questions/26745519/…

标签: python ruby-on-rails dictionary hash actioncable


【解决方案1】:

经过更多研究,问题似乎不是来自 JSON python 编码、ruby 解码,也不是我滥用这些方法。

实际上,actioncable 在接收消息时使用的协议似乎并不完全依赖于“经典”JSON,而是使用“JSON 中的转义 JSON”作为标识符

更多关于rails github问题的信息在这里https://github.com/rails/rails/issues/22675

【讨论】:

    猜你喜欢
    • 2021-07-09
    • 2018-03-28
    • 2018-05-11
    • 1970-01-01
    • 2018-08-27
    • 1970-01-01
    • 1970-01-01
    • 2019-02-15
    • 1970-01-01
    相关资源
    最近更新 更多