0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

ItayaAdvent Calendar 2022

Day 6

Rubyで配列文字列をパースしたかった話

Last updated at Posted at 2022-12-05

概要

"[{'a': 1}]"みたいな配列の中にjsonが入っている文字列をパースしたかっただけのお話。

きっかけ

日頃よくスクレイピングをしているんですけど、そのときに上記のような配列にデータが入っている事がありまして、パースするのに少し苦戦したので今後同じ悲しみを産まないために...

だめだったやり方

僕はRubyの標準ライブラリを信じています。
だから今回もきっとrequire 'json'くんがすべてを解決できると信じていた、そうあの日までは。。。

ぼく「よし、配列の文字列でデータ引っ張って来れたしこれをJSON.parseしてっと...」
システム「unexpected token at ''a':1]' (JSON::ParserError)
ぼく「Why???」

僕の信じていたJSON.parseは配列の中にjsonが入っているようなパターンは解析してくれませんでした。
まぁ、当たり前といえば当たり前なのかもですけど....

できたやり方

いろいろ文献を漁ってみて
「Ruby 配列文字列 パース」とかで調べてもRubyの配列をjoinして文字列にする話とか、その逆とか....そうじゃないんだよなぁって記事がいくつかあった中「ymlでパースすれば行けるよ」という記事を見かけた。
ぼく「yml??まさかぁ。とりあえず試してみるかぁ」

require 'yaml'
str = "[{'a': 1}]"
p YAML.load(str)[0]['a']

出力

1

ちゃんとパースされとる!!!すごい!!!

意外と当たり前にできそうだったけどコツが必要でしたという話

0
0
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?