我有两个要合并的 json 文件。JSON 具有不同的格式(见下文)。我想合并记录,因此文件一中的 [0] 和文件二中的 [0] 将成为新合并文件中的一条记录 [0]。
第一个 JSON (file_a.json) 如下所示:
{
"query": {
"count": 4,
"created": "2012-11-21T23:07:00Z",
"lang": "en-US",
"results": {
"quote": [
{
"Name": "Bill",
"Age": "46",
"Number": "3.55"
},
{
"Name": "Jane",
"Age": "33",
"Number": nil
},
{
"Name": "Jack",
"Age": "55",
"Number": nil
},
{
"Name": "Xavier",
"Age": nil,
"Number": "153353535"
}
]
}
}
}
第二个 JSON (file_b.json) 如下所示:
[
{
"Number2": 25253,
"Number3": 435574,
"NAME": "Bill"
},
{
"Number2": 345353,
"Number3": 5566,
"NAME": "Jane"
},
{
"Number2": 56756,
"Number3": 232435,
"NAME": "Jack"
},
{
"Number2": 7457,
"Number3": 45425,
"NAME": "Xavier"
}
]
两个 JSON 中的所有键都不相同(嗯,实际上“名称”是两者中的一个键,但第一个键是“名称”,第二个键是“名称” - 这样我就可以检查合并工作正常 - 所以我想要最终 JSON 中的“名称”和“名称”),第一个文件中的第一条记录与第二个文件中的第一条记录匹配,依此类推。
到目前为止,我尝试像这样合并:
merged = %w[a b].inject([]) { |m,f| m << JSON.parse(File.read("file_#{f}.json")) }.flatten
但这当然合并了它们,但不是我希望它们合并的方式(它们连续合并,并且由于格式不同,它变得非常丑陋)。
我也尝试过这样的合并:
a = JSON.parse(File.read("file_a.json"))
b = JSON.parse(File.read("file_b.json"))
merged = a.zip(b)
走近了,但仍然不正确,格式仍然很可怕。
最后,我想要的是这个(第二个 JSON 的格式 - 来自第一个 JSON 的标头可以被垃圾):
[
{
"Name": "Bill",
"Age": 46,
"Number": 3.55,
"Number2": 25253,
"Number3": 435574,
"NAME": "Bill"
},
{
"Name": "Jane",
"Age": 33,
"Number": nil,
"Number2": 345353,
"Number3": 5566,
"NAME": "Jane"
},
{
"Name": "Jack",
"Age": 55,
"Number": nil,
"Number2": 56756,
"Number3": 232435,
"NAME": "Jack"
},
{
"Name": "Xavier",
"Age": nil,
"Number": 153353535,
"Number2": 7457,
"Number3": 45425,
"NAME": "Xavier"
}
]
任何帮助表示赞赏。非常感谢。