質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

JSON

JSON(JavaScript Object Notation)は軽量なデータ記述言語の1つである。構文はJavaScriptをベースとしていますが、JavaScriptに限定されたものではなく、様々なソフトウェアやプログラミング言語間におけるデータの受け渡しが行えるように設計されています。

Q&A

解決済

2回答

1930閲覧

Rubyで取得したjson fileを開いて、対象のデータのみに加工して、格納したい。

seabreeze

総合スコア7

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

JSON

JSON(JavaScript Object Notation)は軽量なデータ記述言語の1つである。構文はJavaScriptをベースとしていますが、JavaScriptに限定されたものではなく、様々なソフトウェアやプログラミング言語間におけるデータの受け渡しが行えるように設計されています。

0グッド

0クリップ

投稿2018/01/22 15:25

編集2018/01/22 15:46

###前提・実現したいこと
ruby で json file を開いて必要なデータ(team_code="blue")に絞ってから格納したい。

json

1[ 2 { 3 "date":"20170101", 4 "title":"aiueo", 5 "team_code":"blue", 6 "sub_team_code":"yellow" 7 }, 8 { 9 "date":"20170102", 10 "title":"kakikukeko", 11 "team_code":"yellow", 12 "sub_team_code":"blue" 13 }, 14 { 15 "date":"20170104", 16 "title":"sashisuseso", 17 "team_code":"red", 18 "sub_team_code":"yellow" 19 }, 20 { 21 "date":"20170104", 22 "title":"tatitsuteto", 23 "team_code":"blue", 24 "sub_team_code":"yellow" 25 } 26]

上記をteam_code":"blue"に絞り、
下記のようなjsonを作りたいです。

json

1[ 2 { 3 "date":"20170101", 4 "title":"aiueo", 5 "team_code":"blue", 6 "sub_team_code":"yellow" 7 }, 8 { 9 "date":"20170104", 10 "title":"tatitsuteto", 11 "team_code":"blue", 12 "sub_team_code":"yellow" 13 } 14]

###該当のソースコード

<% require 'json' json_data = File.read('data/sample.json')  json_date = **json(team_code="blue"にしぼったもの。** %>

###試したこと①

<% json_data.each do |x| %> <% x["team_code"].include?("blue") %> <%end%>

trueかfalseかまでは返せたのですが、ここから
team_code="blue"のデータだけを取り出せずにいます。

###試したこと②

<% for i in 0..4 do %> <%= articles[i].select{|k, v| v.include?("blue")} %> <% end %>

sub_team_code="blue"も対象となってしまいます。

環境

ruby 2.4.2p198

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

こんにちは。

select を使って、以下でどうでしょう?

ruby

1require 'json' 2 3json_text = File.read('data/sample.json') 4 5json_data = JSON.parse(json_text) 6 7blue_data = json_data.select { |obj| obj['team_code'] == 'blue' } 8 9p blue_data

上記を実行すると、blue_data には、"team_code""blue"
要素だけを取り出せて、以下のように表示されます。

[{"date"=>"20170101", "title"=>"aiueo", "team_code"=>"blue", "sub_team_code"=>"yellow"}, {"date"=>"20170104", "title"=>"tatitsuteto", "team_code"=>"blue", "sub_team_code"=>"yellow"}]

さらに、blue_data を、見やすいJSON形式の文字列にするには、

ruby

1blue_json_text = JSON.pretty_generate(blue_data)

とします。上記の blue_json_textputs blue_json_text で表示すると、

json

1[ 2 { 3 "date": "20170101", 4 "title": "aiueo", 5 "team_code": "blue", 6 "sub_team_code": "yellow" 7 }, 8 { 9 "date": "20170104", 10 "title": "tatitsuteto", 11 "team_code": "blue", 12 "sub_team_code": "yellow" 13 } 14]

と表示されると思います。

以上参考になれば幸いです。

投稿2018/01/22 17:20

編集2018/01/22 17:45
jun68ykt

総合スコア9058

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

seabreeze

2018/01/23 13:48

ありがとうございます。無事、値を格納できました。 感謝です!!!!!
jun68ykt

2018/01/23 13:52

解決されたようですね、よかったです!
guest

0

ありがとうございます。無事、値を格納できました。
感謝です!!!!!

投稿2018/01/23 13:48

seabreeze

総合スコア7

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問