0

我有以下 json

假设我在移动设备中进行选择,那么将生成此字段

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

如果我的选择是自行车,那么这个字段将被生成

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

我如何达到上述结果。

编辑-1

我有一个表单,其中一些字段是根据类别选择自动生成的。我已将自动生成的字段转换为 json 并作为单列存储在数据库中。 图片网址

我不知道如何解释你能理解我在找什么。查看我的屏幕截图以更好地理解

4

1 回答 1

0

我假设(出于某种疯狂的原因)您将使用 Ruby 来执行此操作。

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

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

...是不可能的。“年”键也是如此。将哈希中的键视为 Highlanders。只能有一个(同名)。因此,您的实际预期输出将是:

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

管他呢。反正...

第 1 步:将 JSON 转换为 Ruby 哈希

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 }

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

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

于 2013-10-29T18:57:15.970 回答