在Rails中合并两个具有匹配ID的JSON

Lou*_*rsu 3 ruby json ruby-on-rails ruby-on-rails-3

我得到了两个结构如下的JSON。第一个来自API:

[
  {
   "course_code":"Basic 101 - 0913",
   "name":"Basic 101",
   "start_at":"2013-09-16T00:00:00+02:00",
   "end_at":"2013-10-13T23:55:00+02:00",
   "workflow_state":"available"
  },
  {"course_code":"Medium 201 - 0913",
   "name":"Medium 201",
   "start_at":"2013-08-06T16:55:25+02:00",
   "end_at":null,
   "workflow_state":"available"
  }
]
Run Code Online (Sandbox Code Playgroud)

第二个是我数据库中的JSON导出:

[
  {
   "id":1,
   "course_id":"Basic 101",
   "name":"Basic Level",
   "description":"blablabla",
   "discipline_id":"1",
   "duration":"28",
   "created_at":null,
   "updated_at":null
  },
  {
   "id":2,
   "course_id":"Medium 201",
   "name":"Medium Level",
   "description":"blablabla",
   "discipline_id":"1",
   "duration":"28",
   "created_at":null,
   "updated_at":null
  }
]
Run Code Online (Sandbox Code Playgroud)

我想将这两个JSON合并为一个,:name在第一个JSON和:course_id第二个JSON中进行匹配。

如果您知道在Rails中使用JSON的优秀教程,那么我真的很感兴趣。

Tob*_*cht 5

这实际上不是JSON问题。

解析JSON数据时,它返回数组和哈希值。

这种情况下,合并它的一种方法是遍历数据并检查您想要/需要匹配的参数。找到匹配项后,您可以使用所需数据手动创建新的哈希,也可以使用

hash1.merge(hash2)
Run Code Online (Sandbox Code Playgroud)

http://www.ruby-doc.org/core-1.9.3/Hash.html#method-i-merge

这将返回由两个哈希组成的哈希-具有相同名称的属性将在第一个哈希中被覆盖。