python - 如何在跨语言对象序列化中处理 ruby​​ 符号

标签 python ruby serialization symbols

我目前正在做一个项目,我需要将对象从 ruby​​ 传输到 python,然后再返回,显然序列化是可行的方法。我看过 yaml 之类的东西,但决定自己编写,因为我不想处理库的依赖关系,因此在分发时需要处理这些问题。我已经写了这个序列化格式是如何工作的 here .

我的问题是,由于这种格式旨在用于 ruby​​ 和 python 之间的跨语言, 我应该如何序列化 ruby 的符号?我不知道在 python 中以相同方式工作的对象。包含符号的转储应该失败吗?我应该将它序列化为一个字符串吗?什么最好?

最佳答案

这不取决于你的项目需要什么吗?如果符号很重要,您将需要一些方法来处理它们。

我不是 Ruby 程序员,但根据我刚刚阅读的内容,我认为将它们转换为字符串可能是最简单的。标准的 Python 解释器将为相同的短字符串重用内存,这似乎是建议使用符号的一个关键原因。

编辑:如果它需要为其他程序员工作,来回传递值不应该改变它们。因此,您要么必须正确处理符号,要么立即抛出错误。它在 Python 中应该足够简单:

class Symbol(str):
    pass

# In serialising code:
if isinstance(x, Symbol):
    serialise_as_symbol(x)

关于python - 如何在跨语言对象序列化中处理 ruby​​ 符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4432993/

相关文章:

ruby-on-rails - ruby 中的条件参数,如何检查 nil?

python - 如何使用 for 循环将首次使用日期存储在字典中

python - 如何在 python 2.5 中编写类似于 itertools.product 的函数

python - 综合列表中的两个for循环

mysql - 努力通过关系添加 has_many

C++:如何保存与平台无关的二进制文件?

Python实例属性从具有相同名称的类属性中获取初始值?

css - Will_paginate 不渲染 Ruby On Rails

c# - 反序列化的 xml - 在不知道特定类型的情况下检查是否有子节点

java - Protocol Buffer java 源代码中 Unresolved 依赖项