gpt4 book ai didi

ruby - 如何在子类中使用 Ruby 的 to_json 并包含 super 的 json?

转载 作者:数据小太阳 更新时间:2023-10-29 08:05:30 26 4
gpt4 key购买 nike

#!/usr/bin/env ruby

require 'json'

class A
def to_json(*a)
{ :a => 'a' }.to_json(*a)
end
end

class B < A
def to_json(*a)
super({ :b => 'b' })
end
end

puts B.new.to_json

产生

{"a":"a"}

如何制作它

{"a":"a", "b":"b"}

以合理的方式?

我正在使用 Ruby 1.9.3 和最新的 json gem。

一个相关的问题是:to_json 的参数 *a 是什么?我已经搜索了文档,但无济于事。

最佳答案

您在两个类中有两个散列 {:a=>'a'}{:b=>'b'},它们被封装,即隐藏来自外面的世界。我能看到的唯一方法是将 json 字符串解析为哈希并将它们合并,然后将结果转换为 json。

class B < A
def to_json(*a)
JSON.parse(super).merge({:b=>'b'}).to_json
end
end

但这里会有一些小区别:您正在合并 {:a=>'a',:b=>'b'} 并得到 {"a":"a","b":"b"}

*a 是设置json格式选项的参数

关于ruby - 如何在子类中使用 Ruby 的 to_json 并包含 super 的 json?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9636509/

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