2013-10-29 61 views
0

我有以下的JSON合并JSON和删除重复红宝石轨

假设我在手机那么这个领域的选择将产生

{"Style":"convertible","Year":"2010","Color":"green"} 
{"Style":"convertible","Year":"2010","Color":"red"} 

如果我的选择是自行车则此字段将generatd

{"model":"2012","mileage":"20kmph","Color":"red"} 

我该如何达到上述结果。

编辑-1

我具有其中一些与被自动字段的基础上产生类别选择的形式。我已将自动生成的字段转换为json并作为单列存储在数据库中。 Image url

我不知道如何解释你能否理解我在找什么。看看我的截图,以便更好地了解

回答

0

我假设(出于某种疯狂的原因)您将使用Ruby来做到这一点。

但首先,你的预期输出是错误的,因为你不能有重复键的哈希:

{"Color": "green", "Color": "red"} 

...是不可能的。 “年份”键也一样。把散列中的键看作是汉兰达。只能有一个(同名)。因此,您的实际预期产出将为:

{"Style":"convertible", "Year":"2012", "Color":"red", "name":"test"} 

或其他。反正...

第1步:转换JSON到一个Ruby的Hash

require 'json' 
converted = JSON.parse '[{"Style":"convertible","Year":"2010","Color":"green"}, 
{"Style":"convertible","Year":"2010","Color":"red"}, 
{"name":"test","Year":"2012","Color":"red"}]' 

步骤2:将它们合并

merged = {} 
converted.each { |c| merged.merge! c } 

现在合并后的变量应该像上面的实际预期输出。

剩下的唯一问题是决定哪些重复键覆盖哪些其他重复键。这里重要的是你合并哈希的顺序。最后合并的内容会覆盖任何现有的重复键/值。希望有所帮助。

+0

我需要这个的原因是我试图创建精致的搜索,如果2012年和2010年出现在JSON中,那么它应该突出显示它。否则,我需要隐藏其他人。我是否正确? – Prabhakaran8737

+0

我是否可以在那里申请任何联盟运营 – Prabhakaran8737

+0

然后不要合并或联合。将它们保存为单独的JSON对象,以便它们可以拥有自己的密钥。合并似乎并不是你想要的。你能重述这个问题吗? – DiegoSalazar