csvからsqliteに入れたデータをJSONで出力する

csvからsqliteに入れたデータをJSONで出力する先ほど、sqlite3にcsvからデータをインポートしたので、このデータをJSONで出力したいと思います。

Sinatraでやってみます。

準備

$bundle init
$vi Gemfile
$bundle install --path vendor/bundle

Gemfileの中身はこんな感じです。バージョンなど指定した方がいいと思いますが、とりあえず。

source "https://rubygems.org"

ruby "2.0.0"

gem "sinatra"
gem "sinatra-contrib"

marin.rbはこんな感じ。適当に書いてみました。Rubyでディクショナリ的なの使ったの初めてだ。てかほとんどRuby書いたことない。勉強中です。

require "sinatra"
require "sinatra/reloader"
require "active_record"
require "sinatra/json"

ActiveRecord::Base.establish_connection(
  "adapter" => "sqlite3",
  "database" => "earth.db"
)

class Country < ActiveRecord::Base
end

get '/countries' do
  @countries = Country.order("id asc").to_a
  countries = Array.new()
  @countries.each do |country|
    countries.push({id: country.id, name: country.name, color: country.color})
  end
  output = {countries: countries}
  json output
end

できた

{
    "countries": [
        {
            "color": "red", 
            "id": 0, 
            "name": "Japan"
        }, 
        {
            "color": "blue", 
            "id": 1, 
            "name": "US"
        }, 
        {
            "color": "yellow", 
            "id": 2, 
            "name": "Britain"
        }, 
        {
            "color": "purple", 
            "id": 3, 
            "name": "France"
        }, 
        {
            "color": "green", 
            "id": 4, 
            "name": "Germany"
        }, 
        {
            "color": "orange", 
            "id": 5, 
            "name": "China"
        }, 
        {
            "color": "brown", 
            "id": 6, 
            "name": "India"
        }
    ]
}

参考

Pocket
LINEで送る

You may also like...