我有两个结构如下的 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":"M
[ { "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" } ]
第二个是从我的数据库导出的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 } ]
我想将这两个JSON合并为一个,在第一个JSON中匹配:name,在第二个JSON中使用:course_id.
如果你知道在Rails中使用JSON的好教程,我真的很感兴趣.
快速回答,让你知道去哪里.假设第一个json在json1中,第二个在json2变量中,这段代码:require 'json' arr1 = JSON.parse(json1) arr2 = JSON.parse(json2) mrg = [] arr1.each do |el1| arr2.each do |el2| if el2['course_id'] == el1['name'] mrg.push(el1.merge(el2)) end end end p mrg
将打印:
[ { "course_code"=>"Basic 101 - 0913", "name"=>"Basic Level", "start_at"=>"2013-09-16T00:00:00+02:00", "end_at"=>"2013-10-13T23:55:00+02:00", "workflow_state"=>"available", "id"=>1, "course_id"=>"Basic 101", "description"=>"blablabla", "discipline_id"=>"1", "duration"=>"28", "created_at"=>nil, "updated_at"=>nil }, { "course_code"=>"Medium 201 - 0913", "name"=>"Medium Level", "start_at"=>"2013-08-06T16:55:25+02:00", "end_at"=>nil, "workflow_state"=>"available", "id"=>2, "course_id"=>"Medium 201", "description"=>"blablabla", "discipline_id"=>"1", "duration"=>"28", "created_at"=>nil, "updated_at"=>nil } ]