将对象序列化为 JSON、XML、YAML?

2024-02-03

我之前问过有关序列化和验证的问题。有人提到使用 JSON gem,它允许我告诉我的对象如何使用to_json方法,然而 Ruby 似乎很容易做很多复杂的事情,但另一方面,一些非常简单的事情似乎相当复杂,序列化就是其中之一。

我想知道是否有办法获得干净的对象:

class CleanClass
    attr_accessor :variable1
    attr_accessor :variable2
    attr_accessor :variable3
end

cleanObject = CleanClass.new

理想情况下,我不想弄脏模型,我只想将它传递给某物并告诉它输出类型应该是什么,并让它发挥其魔力。

一个例子是这样的:

jsonOutput = MagicSerializer::Json.Serialize(cleanObject)
xmlOutput = MagicSerializer::Xml.Serialize(cleanObject)
yamlOutput = MagicSerializer::Yaml.Serialize(cleanObject)

revertedJsonObject = MagicSerializer::Json.Unserialize(jsonOutput)
revertedXmlObject = MagicSerializer::Xml.Unserialize(xmlOutput)
revertedYamlObject = MagicSerializer::Yaml.Unserialize(yamlOutput)

我想传递一个对象,并输出字符串,然后能够将其转换回来。

我知道 ActiveModel 具有序列化功能,但我需要弄脏我的类才能执行此操作,并且如果可能的话我不想更改模型。 ActiveSupport 似乎满足 JSON 标准,因为我可以调用它,它将获取一个对象并吐出 JSON,但我想支持其他类型。

任何进一步的信息都会很棒!


Ruby 内置了对二进制和 yaml 的自动序列化/反序列化。

Yaml:

require 'yaml'
serialized = CleanClass.new.to_yaml
object = YAML.load(serialized)

Marshal:

serialized = Marshal.dump(CleanClass.new)
object = Marshal.load(serialized)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将对象序列化为 JSON、XML、YAML? 的相关文章

  • 如何处理 Nokogiri 中的 404 未找到错误

    我正在使用 Nokogiri 来抓取网页 很少有 url 需要猜测 当它们不存在时 会返回 404 未找到错误 有没有办法捕获这个异常 http yoursite page 38475 gt page number 38475 doesn
  • Text::平衡和多行 xml

    看来我有点失落了 我需要解析一个大的 大约 100 mb 且相当难看的 xml 文件 如果我使用parsefile 它返回错误 文档元素后的垃圾 但它会很乐意解析文件的较小元素 所以我决定将文件分解为元素并解析它们 由于不鼓励使用正则表达式
  • 使用正则表达式搜索 Ruby 数组

    你好 我有一个小的 ruby 函数 它可以分割出一个 Ruby 数组 如下所示 def rearrange arr from to sidx arr index from eidx arr index to arr sidx arr sid
  • rake db 问题:迁移 -

    我无法为 Ruby on Rails 设置 MySQL 数据库 设置数据库并确保 config database yml 文件匹配后 我遇到了以下错误消息 U Rails alpha gt rake db migrate trace in
  • D3 将现有 SVG 字符串(或元素)追加(插入)到 DIV

    我到处寻找这个问题的答案 并找到了一些我认为可能有用的资源 但最终没有让我找到答案 这里有一些 外部SVG http bl ocks org mbostock 1014829 嵌入SVG https stackoverflow com qu
  • 是否有更好的一个衬垫来处理“除非something.new?||something[:key].nil?”

    有没有办法让这个内衬变得更好看 var params key1 key2 unless params blank params key1 blank 就在这里 var params params key1 params key1 key2
  • 如何在 Swift 3 中解析 JSON 数组 [重复]

    这个问题在这里已经有答案了 我从 Socket 获取了一些我想访问的数据 但收到错误消息 指出每次都无法将 NSArray 转换为 NSDictionary struct SocketEventHandler let event Strin
  • github actions 找不到 package.json

    我正在尝试设置一些基本的 GitHub 操作来在 PR 上撰写评论 Action 发布在 github 上 如下所示 action yml 文件 name name description description author me inp
  • Jekyll YAML 循环引用

    我有一个包含两个页面的 jekyll 项目 每个页面都由互相引用的 YAML 映射支持 例如 a a name Ay parents children b b b name Bee parents a children Vanilla YA
  • 如何将文件的元素放入哈希中? -红宝石

    所以我有一个以下形式的文件 Key1 Value1 Key2 Value2 Key3 Value3 用制表符分隔 我的问题是如何打开这个文件并将其放入哈希中 我曾尝试这样做 fp File open file path fp each do
  • Ruby:如何在不创建新实例的情况下检查实例方法的参数?

    在 Ruby 1 9 2 中 您可以使用 method symbol 检查任何方法的参数 如何在不创建新车的情况下检查 Car initialize 方法 class Car def initialize fuel type passeng
  • 如何从 MySQL 数据查询创建 XML 文件?

    我想知道一种仅使用 MySQL 查询创建 XML 文件的方法 根本不使用任何脚本语言 有关于这个主题的书籍 教程吗 UPDATE 我想澄清一下 我想使用 sql 查询将 XML 数据转发到 php 脚本 Here s 关于从 MySQL S
  • 使用 xmllint 检查 XML 语法

    我在处理某些 XML 打印文件时遇到问题 其中源系统忽略将某些字符转换为其等效的 XML 语法 例如 未转换为 amp 有没有办法用 xmllint 捕获这个 我不需要使用 XSD 检查一般树结构 xmllint noout your te
  • 通过 ruby​​ 进程共享变量

    我正在编写一个 gem 其中我必须分叉两个进程来启动两个 webrick 服务器 我想通过基类的类方法启动该服务器 因为应该只运行这两个服务器 而不是多个服务器 在运行时 我想调用这两台服务器上的一些方法来更改变量 我的问题是 我无法通过基
  • ruby rspec 不能与 simplecov 一起使用

    我安装了 simplecov gem 并添加了 require simplecov SimpleCov start 到spec helper rb文件 现在如果我在some file spec rb文件中包含spec helper rb并尝
  • 更改 en.yml 文件中的属性名称不起作用

    我更改了 ruby on Rails 项目中 en yml 文件中的属性名称 按钮工作正常 但字段属性并没有改变 这是我的模型 class Enr AffordableWarmth lt ActiveRecord Base self tab
  • 使用 json_encode() 函数在 PHP 数组中生成 JSON 键值对

    我正在尝试以特定语法获取 JSON 输出 这是我的代码 ss array 1 jpg 2 jpg dates array eu gt 59 99 us gt 39 99 array1 array name gt game1 publishe
  • 如何在 Ruby 中将 DateTime.now 转换为 UTC?

    如果我有d DateTime now 如何将 d 转换为 UTC 带有适当的日期 DateTime now new offset 0 将在标准 Ruby 中工作 即没有 ActiveSupport
  • JSON 到 hashmap (杰克逊)

    我想将 JSON 转换为 HashMapJackson http jackson codehaus org 这是我的 JSON String json Opleidingen name Bijz trajecten zorg en welz
  • 从 Twitter API 2.0 获取 user.fields 时出现问题

    我想从 Twitter API 2 0 端点加载推文 并尝试获取标准字段 作者 文本 和一些扩展字段 尤其是 用户 字段 端点和参数的定义工作没有错误 在生成的 json 中 我只找到标准字段 但没有找到所需的 user fields 用户

随机推荐

  • 在 python 中处理 try except 的更简洁的方法

    所以 假设我有 3 个不同的调用something something1 and something2 现在 我称之为 try something something1 something2 except Keyerror as e pri
  • VS2012中“从源代码管理中排除”发生了什么

    我想从 TFS 2012 源代码管理中排除代码文件夹中的某些文件 在 VS2012 之前 这是通过 源代码管理资源管理器 右键菜单中的 从源代码管理中排除 命令来完成的 但在VS2012中我找不到它 有人知道它在哪里吗 顺便说一句 我正在使
  • 将类型限制为特定类型

    是否可以将泛型方法限制在特定类型上 我想写这样的东西 public T GetValue
  • 如何在Android中使用SetGroup()在组中显示通知?

    我尝试过使用 0 通知 ID 以及唯一的通知 ID 还使用了 setGroup 如下所示 它仍然每次都会生成一个新的通知 我想合并通知正文并将标题设置为通用 class MyFirebaseMessagingService Firebase
  • 正则表达式非捕获组 - 无用?

    我试图理解这个概念 但我真的看不出它有什么用 所以我假设我没有抓住重点 例如 这个正则表达式 0 9 st nd rd th 将匹配带或不带 st rd 等后缀的数字 So 1st match 0 9 st nd rd th g 返回 第一
  • 如何在 R 中导出 GBM 模型?

    是否有标准 或可用 方法在 R 中导出 GBM 模型 PMML 可以工作 但是当我尝试使用 pmml 库时 可能是错误的 我收到错误 例如 我的代码看起来类似于 library gbm library pmml model lt gbm f
  • VSCode:用户设置中的 TextMate 正则表达式

    我正在尝试更改主题以更适合我的日常使用 但在尝试自定义特定单词或模式时遇到了一些麻烦 我现在正在使用这种格式 editor tokenColorCustomizations textMateRules scope comment setti
  • 如何使用 Spark 计算累积和

    我有一个 String Int 的 rdd 它按键排序 val data Array c1 6 c2 3 c3 4 val rdd sc parallelize data sortByKey 现在我想以零开始第一个键的值 并将后续键作为先前
  • Eclipse 中的 Jetty 8.1.1.v20120215 和 web 应用程序 (JSF + Maven)

    我正在尝试在 Eclipse 中运行我的 web 应用程序 使用 JSf Jetty 8 1 1 v20120215 我下载了 Jetty Adapter 然后在 Eclipse 中添加了 Jetty Server 8 1 然后我在 Jet
  • 如何开始使用 Perl 进行网页抓取?

    我有兴趣学习 Perl 我正在使用 Learning Perl 书籍和 cpan 的网站作为参考 我期待着使用 Perl 做一些网页 文本抓取应用程序来应用我所学到的东西 请建议我一些好的选择 这不是家庭作业 想要在 Perl 中做一些事情
  • WebRTC、捕获屏幕

    我当前的问题是 我想找到一种在 Android 上的 webrtc 连接期间捕获帧 屏幕截图的方法 我知道这里已经有一些解决方案 但没有一个对我有用 按照我目前的方法 我遵循了这个Gist https gist github com Eri
  • 如何在 Python 中从 JavaScript CryptoJS.AES.encrypt(password, passphrase) 解密密码

    我有一个通过 JavaScript 加密的密码 var password sample var passphrase sample passphrase CryptoJS AES encrypt password passphrase 然后
  • Jenkins Pipeline:查看子构建作业的日志

    我有一个詹金斯管道正在运行 作业 作为其阶段之一 我想知道 有没有一种方法可以查看管道中构建作业的日志 而无需单击作业并查看控制台输出 这只会让您更容易地看到失败 而无需多次点击 是的 有一种方法可以做到这一点 不幸的是它看起来没有记录 T
  • NodeJS - Socket.IO 设置:提供静态内容,无需握手(Rackspace 云服务器上的 Ubuntu)

    我已经在 Rackspace 上安装了 Ubuntu node js 和 Socket IO 当我尝试一个简单的服务器应用程序并尝试使用客户端请求时 我仅得到 提供的静态内容 而不是握手 在调试中的浏览器中 我可以看到 Hello S 在服
  • SQL Server:如何中止查询分析器中的一系列批处理?

    我有一系列由特殊查询分析器批处理分隔符关键字分隔的 T SQL 语句 GO 如果一个批次失败 我需要查询分析器不要尝试后续批次 我希望它停止处理这一系列批次 例如 PRINT This runs go SELECT 0 0 This cau
  • 在通知系统中每个通知要插入多少行?

    继从这个问题 https stackoverflow com questions 9735578 building a notification system我正在考虑构建一个类似的通知系统 并且我有一个问题 我认为它有一个明显的答案 但我
  • ó 在 xml 文件中不允许,但在 .net 资源文件中允许?

    我正在解析一些 net 资源文件 resx 其中 我有这样的数据 informaci oacute n 这适用于我的 net 应用程序 但是当我尝试在我的 xml 文档中加载此文件时 XDocument xmlDoc XDocument P
  • 如何查看mysql连接的默认端口号?连接不工作! jdbc连接

    我正在尝试使用 java 文件中的 jdbc 连接数据库 它根本无法连接并不断给我错误 出了问题 我猜这是因为端口号 因为所有其他数据 例如用户名 密码和其他代码 似乎都是正确的 我想检查默认端口号 以便我可以正确尝试 我确实尝试使用所有这
  • Windows 上的 Mongodb 性能

    我最近一直在研究可用于 NET 的 nosql 选项 并且 MongoDB 在可用性和支持方面明显成为赢家 所以今晚我决定尝试一下 我从 mongodb 站点下载了版本 1 2 4 Windows x64 二进制 并使用以下选项运行它 C
  • 将对象序列化为 JSON、XML、YAML?

    我之前问过有关序列化和验证的问题 有人提到使用 JSON gem 它允许我告诉我的对象如何使用to json方法 然而 Ruby 似乎很容易做很多复杂的事情 但另一方面 一些非常简单的事情似乎相当复杂 序列化就是其中之一 我想知道是否有办法