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

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

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

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

JSON

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

Q&A

解決済

1回答

251閲覧

Rubyで開発したパーサーがうまく動作しない

kisuke-09

総合スコア13

Ruby

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

JSON

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

0グッド

0クリップ

投稿2019/01/10 05:24

編集2019/01/10 05:25

前提・実現したいこと

お世話になっております。
現在、ExcelファイルをJSONファイルにパースするツールを
Rubyにて開発しております。
しかし、今までは動いていたツールが本日、実行したところ、
エラーメッセージが発生し、私の勉強不足もあり、独力での解決が難しくなってきました。
皆様のお知恵をお借りしたく、質問させていただきます。

発生している問題・エラーメッセージ

Traceback (most recent call last): 2: from x2j.rb:14:in `<main>' 1: from x2j.rb:14:in `each' x2j.rb:28:in `block in <main>': undefined local variable or method `  ' for main:Object (NameError)

該当のソースコード

Rubyソースコード

1#使用するgemを宣言 2require 'spreadsheet' 3require 'json' 4 #シートの文字コードを指定 5 Spreadsheet.client_encoding = 'UTF-8' 6 #シートが開けるかチェック 7 begin 8 book = Spreadsheet.open $*[0] 9 rescue 10 STDERR.puts "usage: ruby x2j.rb excel_file" 11 exit false 12 end 13 #パース処理 14 book.worksheets.each do |sheet| 15 next if sheet.name.index('!') == 0 16 #labelの位置を2行目に指定 17 labels = sheet.row(1) 18 $rows = [] 19 sheet.rows[1..-1].each do |row| 20 hash = Hash.new() 21 row.each_with_index do |cell, i| 22 hash[labels[i]] = cell.kind_of?(String) && cell.include?(',') ? cell.split(',') : cell 23 end 24 $rows.push hash 25 end 26 #jsonファイル作成処理 27 f = File.open(sheet.name + '.json', 'w') 28  #json文字列成形・書き込み処理 29 rows.shift() 30 f.write JSON.generate(rows) 31 f.close 32end 33

試したこと

  • エラーメッセージの検索

 調べてみたところ、よくある変数/メソッドが見つからないというものでしたが、
その見つからないといわれている箇所がコメントアウトしている行と、変数名ではなく、
空白で示されているため正直お手上げ状態です。

  • 問題発生個所の切り分け

 ・ファイルを読み込めない場合、エラーメッセージが出力されるが今回は発生していない
・該当エラーメッセージが出ても空のJSONファイルは生成される
上記より、ファイルからデータを抽出し、パースする処理で問題が発生していると思われる

  • 差異の確認

 正常に動作したときにとったバックアップファイルと現在問題が起きているファイルをWinMergeにかけたところ、パース元のExcelファイルとrbファイルともに差異は見当たらない

補足情報(FW/ツールのバージョンなど)

環境は以下の通りです。
Windows10 64bit
ruby 2.5.3p105 (2018-10-18 revision 65156) [x64-mingw32]

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

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

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

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

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

guest

回答1

0

ベストアンサー

Ruby

1  #json文字列成形・書き込み処理

ここに全角空白がありました。
半角空白等に直してください。

投稿2019/01/10 05:27

dice142

総合スコア5158

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

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

kisuke-09

2019/01/10 05:37

dice142様 ご回答ありがとうございます。 コメントアウトしているものとして完全に見落としていました。 しかしご指摘いただいた内容を反映(該当コメント部分を削除)し、実行したところ、 無事に生成できることを確認しました。 ご助力心より感謝いたします。 ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問