gpt4 book ai didi

ruby - 使用 JSON gem 将自定义对象转换为 JSON

转载 作者:数据小太阳 更新时间:2023-10-29 07:11:21 27 4
gpt4 key购买 nike

我正在学习如何使用 JSON gem 解析和生成 JSON。我可以轻松地创建数据哈希并将其生成为 JSON;但是,在获取一个类的实例(例如 Person 实例)并将其所有实例变量放入哈希中以转换为 JSON 时,我脑袋放屁。

这是我遇到问题的例子:

require "json"

class Person

def initialize(name, age, address)
@name = name
@age = age
@address = address
end

def to_json

end


end

p = Person.new('John Doe', 46, "123 Elm Street")
p.to_json

我想创建一个 .to_json 方法,这样我就可以获取一个 person 对象并将其所有实例变量转换为 JSON。我想我需要做的是获取 Person 的所有实例变量,将它们放入哈希中,然后调用 JSON.generate(hash)。我现在正在为如何做到这一点而绞尽脑汁。那么有人可以帮助我完成 to_json 方法,或者建议更好的实现方法吗?谢谢!

最佳答案

首先您需要确保使用正确的基本结构:

def to_json(*a)
{
'json_class' => self.class.name,
'data' => Your data
}.to_json(*a)
end

JSON gem 使用 json_class 键来确定将数据传递到哪个类。 *a 参数包括 JSON gem 传入的所有参数,通常对您的类不重要,因此您只需将它直接传递给散列的 to_json 调用。接下来存储数据的最简单方法是散列或数组:

    'data'         => [@name, @age, @address]

    'data'         => { 'name' => @name, 'age' => @age, 'address' => @address

第一个可能更快并且使 self.json_create 方法更容易编写,而第二个更容易向后兼容,如果你改变了数据结构并希望加载旧的JSON 对象。

关于ruby - 使用 JSON gem 将自定义对象转换为 JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4775777/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com