Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails jbuilder合并2个Json数据并将其发送到一个键_Ruby On Rails_Json_Hash_Ruby On Rails 5 - Fatal编程技术网

Ruby on rails jbuilder合并2个Json数据并将其发送到一个键

Ruby on rails jbuilder合并2个Json数据并将其发送到一个键,ruby-on-rails,json,hash,ruby-on-rails-5,Ruby On Rails,Json,Hash,Ruby On Rails 5,我使用rails 5和jbuilder发送json。我面临的问题是我想合并2个表json并将其发送到同一个键 我的json.jbuilder如下所示 json.children env.sites do |site| json.nodeId "site_#{site.id}" json.type "site" json.extract! site,:id, :key, :name json.children site.networks do |network| json.

我使用rails 5和jbuilder发送json。我面临的问题是我想合并2个表json并将其发送到同一个键

我的json.jbuilder如下所示

json.children env.sites do |site|
  json.nodeId "site_#{site.id}"
  json.type "site"
  json.extract! site,:id, :key, :name
  json.children site.networks do |network|
    json.nodeId "network_#{network.id}"
    json.type "network"
    json.extract! network,:id, :name
    json.children network.vlans do |vlan|
      json.type "vlan"
      json.extract! vlan,:id, :name
    end
  end
  json.children site.instances do |instance|
    json.type "host"
    json.extract! instance,:id, :name
    json.content do
      json.cpu instance.cpu
    end
  end
end

我在这里面临的问题是,我想在同一个密钥中合并site.networks和site.instances。。我将如何实现这一点..???

您可以使用
json.array

试试这个

json.children env.sites do |site|
  json.nodeId "site_#{site.id}"
  json.type "site"
  json.extract! site,:id, :key, :name
  json.children do
    json.array!(site.networks) do |network|
      json.nodeId "network_#{network.id}"
      json.type "network"
      json.extract! network,:id, :name
      json.children network.vlans do |vlan|
        json.type "vlan"
        json.extract! vlan,:id, :name
      end
    end
    json.array!(site.instances) do |instance|
      json.type "host"
      json.extract! instance,:id, :name
      json.content do
        json.cpu instance.cpu
      end
    end
  end
end

和你的钥匙一样?当前和预期的json输出是什么?当前的输出是用site.instances数据覆盖子键,预期的是它应该合并site.networks和site.instances jsonit没有多大帮助。你不能合并任何东西。你的很多键都是一样的,你能发布预期的json输出吗?什么需要数组,什么需要散列?解决方案可行,但在我的例子中,另一个要求是缓存。我可以将上述情况下的“site.networks”数组缓存为#json.cache_集合吗!site.networks,键:'site_network|u array'do | network |。。。。。。。。结束