我有以下json
假设我在移动设备中进行选择,则会生成此字段
{"Style":"convertible","Year":"2010","Color":"green"}
{"Style":"convertible","Year":"2010","Color":"red"}
如果我的选择是自行车,那么这个领域将被生成
{"model":"2012","mileage":"20kmph","Color":"red"}
我如何达到上述效果。
修改-1
我有一个表单,其中一些字段可以根据类别选择自动生成。我已将自动生成的字段转换为json并作为单列存储在数据库中。 Image url
我不知道如何解释你能理解我在寻找什么。查看我的屏幕截图以便更好地理解
答案 0 :(得分:0)
我假设(出于一些疯狂的原因)你将使用Ruby来做到这一点。
但首先,您的预期输出是错误的,因为您不能使用重复键的哈希:
{"Color": "green", "Color": "red"}
......是不可能的。 “年”键也是如此。将哈希中的键视为Highlanders。只有一个(同名)。因此,您的实际预期输出将是:
{"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 }
现在合并的变量看起来应该与上面的实际预期输出相似。
剩下的唯一问题是决定哪些重复键覆盖哪些其他重复键。这里重要的是合并哈希的顺序。最后合并的那些将覆盖任何现有的重复键/值。希望有所帮助。