2013年01月20日

JSONPath というのがあって、いわゆる XPath の JSON 版です。

仕様は以下

 JSONPath - XPath for JSONはてブ

XPath すべての機能が使えるわけではありませんが、巨大な JSON から目的の key を探す場合にはなかなか便利です。

たとえば、Dailymotion の JSON なんかはダンプすると 900行ぐらいあったりして、しかも超絶階層が深い。更にいうと配列が多くて、順番が変わる可能性も高い (というか実際に昔作ったスクリプトがうごかなくなっていた)。

そういう場合にサクッと指定してモリっと取ってきてくれると便利ですね。

例えば Dailymotion の動画のタイトルが欲しい場合は、JSONPath を使わないと以下のようになります。

my $title = $json->{sequence}[0]{layerList}[0]{sequenceList}[2]{layerList}[0]{param}{externalTargetingParams}{dm_title};

長いですね!頑張って自分で調べました。。。

しかし、JSONPath をつかうと以下のようになってだいぶ簡単。perl だと JSON::Path というそのまんまのモジュールがあるのでこれを使いましょう。

use JSON::Path;

my $title = JSON::Path->new('$..*.dm_title')->value($json);

上記の JSONPath は XPath にすると "//*/dm_title" みたいなもんです。なんとなく読めますね。JSONPath のページに syntax が書いてあるので詳しいところはそちらを御覧ください。

で、Union operator も使えるので、Dailymotion の動画の URL が高画質順に欲しい場合は

use JSON::Path;

my $json_path = JSON::Path->new('$..*[hqURL,sdURL,ldURL]');

my @urls  = $json_path->values($json);
my @paths = $json_path->paths($json);

みたいな感じでサクッと取れます!

ちなみにこの時にとれた @paths は

$['sequence']['0']['layerList']['0']['sequenceList']['2']['layerList']['2']['param']['sdURL']
$['sequence']['0']['layerList']['0']['sequenceList']['2']['layerList']['2']['param']['ldURL']

でした。なげぇ。

というわけで JSONPath なかなか便利ですね。というお話でした。

トラックバックURL

コメント一覧

1. Posted by とおりすがり   2013年01月21日 10:00
そういえば Data::DPath ってのもありますね!
https://metacpan.org/module/Data::DPath
2. Posted by xaicron   2013年01月25日 01:38
おお、こんなのもあったんですね。知りませんでした!
3. Posted by kata kata romantis   2013年12月21日 03:36

この記事は非常に良いですが、それでは書き続けるし、うまくいけば、このブログが成功になりましょう!
4. Posted by ahli seo   2014年02月22日 03:56
これは良いニュースですが、私は読んでいる
5. Posted by diakui   2014年02月26日 08:10
このウェブサイトの私の忠実な読者と再び会うおはようございます!
6. Posted by cara menghilangkan jerawat   2014年03月09日 22:44
本当に良い品は、私がこのブログであることが幸せです。
7. Posted by kata kata cinta   2014年03月09日 22:45
本当に良い品は、私がこのブログであることが幸せです。
8. Posted by dp bbm bergerak   2014年03月27日 15:38
このブログは、私がこのブログを愛し、私に知識を与えます。
9. Posted by gambar bergerak   2014年03月27日 15:38
私は、非常に有用な記事のすべてを読むことが幸せです。私はこのブログであることが幸せです。
10. Posted by kata kata cinta   2014年04月21日 21:53
本当に良い品は、私がこのブログであることが幸せです。
11. Posted by Cerita Lucu   2014年04月24日 15:35
この記事は非常に良いですが、それでは書き続けるし
12. Posted by tempat wisata di lombok   2014年05月08日 02:50
これは実際に読むことは非常に興味深い記事です!
更新された場合に、より良く、より面白いかもしれ
13. Posted by operatorku   2014年05月12日 19:08
私はあなたのブログ、非常に良い記事と非常に便利であることがとてもうれしいです
14. Posted by operatorku.com   2014年05月20日 06:52
私はあなたが提示情報を愛するの上、上記の情報を共有していただきありがとうございます
15. Posted by dunia remaja   2014年06月04日 08:57
私はあなたが提示情報を愛するの上、上記の情報を共有していただきありがとうございます
16. Posted by kata kata lucu   2014年06月04日 12:01
本当に良い品は、私がこのブログであることが幸せです。
17. Posted by kata kata cinta   2014年06月04日 20:28
これは良いニュースですが、私は読んでいる
18. Posted by kata kata cinta romantis   2014年06月11日 02:38
非常に素晴らしいのニュース、インドネシアの国民の成功を読み、挨拶、私たちへの書き込みをありがとうございました
19. Posted by kata kata mutiara   2014年06月16日 05:41
ありがとうございます、あなたの文章が読み、非常に良いと面白いです
20. Posted by kata kata bijak   2014年06月16日 10:35
このブログに興味深い記事が、私はこのブログであることがとてもうれしいです。
21. Posted by saatnya   2014年06月18日 03:03
良いニュースは、ありがとうございました!
22. Posted by kata kata cinta   2014年06月19日 08:29
非常に興味深い記事、私はこの記事を投稿してくれてありがとう、私は最新の記事を待っています、それを読むことは非常に満足しています。
23. Posted by kata kata galau   2014年06月26日 16:23
私はこのブログの記事を読みましたし、私の知識は非常に有用であり、私はこのブログが大好きです。
24. Posted by resep kue   2014年07月14日 03:01
素晴らしい記事、ありがとうございました
25. Posted by resep kue   2014年07月14日 03:02
素晴らしい記事、ありがとうございました
26. Posted by kumpulan kata kata cinta romantis buat pacar   2014年07月21日 12:21
非常に記事ここに有用な情報をたくさん見つける幸いです
27. Posted by discount ray ban sunglasses   2014年08月23日 18:02
All women & men love ray ban sunglasses. Top design ray ban sunglasses outlet can bring wearers self-confidence. Our shop provide new style cheap ray ban AVIATOR Sunglasses, WAYFARER Sunglasses, CLUBMASTER Sunglasses, ERIKA Sunglasses, JUNIOR Sunglasses, JUSTIN Sunglasses, polarized and round sunglasses sale uk, it can highlight your beauty, your charming and make you more believe yourself! You need them in this hot summer! Free shipping over £ 40!
discount ray ban sunglasses http://mrzcompany.com/wp-feed.php
28. Posted by kata kata cinta   2014年09月04日 23:13
私はあなたが提示情報を愛するの上、上記の情報を共有していただきありがとうございます
29. Posted by kumpulan kata kata cinta terbaru untuk pacar   2014年09月15日 00:27
これは良いニュースですが、私は読んでいる
30. Posted by Kata Kata Galau Sedih tentang Cinta   2014年09月17日 05:59
本当に良い品は、私がこのブログであることが幸せです。。。
31. Posted by kata kata mutiara   2014年09月22日 16:39
非常に良いニュース、そして興味深い観察する
32. Posted by jasa fotocopy murah   2014年09月25日 19:01
書き込みは、注意することは興味深い
33. Posted by dunia remaja   2014年09月28日 19:46
本当に良い品は、私がこのブログであることが幸せです。
34. Posted by pakar seo   2014年10月02日 22:40
良いニュースと面白い、ありがとう
35. Posted by kata kata galau   2014年10月03日 17:11
私はあなたが提示情報を愛するの上 上記の情報を共有していただきありがとうございます
36. Posted by ucapan selamat ulang tahun   2014年10月03日 20:09
これ以上の興味深い最新のニュースの更新
37. Posted by cetak yasin   2014年10月12日 21:56
ジャカルタの場所印刷とブック安いヤシンレター
38. Posted by kata kata galau sedih   2014年11月01日 03:51
これは良いニュースですが、私は読んでいる
39. Posted by kata kata bijak   2014年11月20日 14:15
私たちは、このポストを得るために取る読んで概説ポイントを実装する必要があります。
40. Posted by kata kata galau   2014年12月08日 05:11
この記事は非常に良いですが、それでは書き続けるし、うまくいけば、このブログが成功になりましょう
41. Posted by Daftar Film terbaru 2015   2015年01月06日 09:18
書き込みは、注意することは興味深い
42. Posted by チューブトップビキニ   2015年01月24日 07:59
6780『艶唄‐チェスタ知事?グ『艶唄‐チェスタ
43. Posted by batu akik   2015年02月14日 18:11
非常に意味のある情報、常にリーダーになるのうまくいけばあなたの作品。
44. Posted by numpangpromo   2015年03月01日 20:53
私はこの記事の新しい科学することができます。
45. Posted by 彼と旅行水着   2015年04月01日 18:50
フシス?フプを、のてあ内を
46. Posted by CETAK BUKU   2015年04月10日 21:02
5 あなたのブログを訪問することを喜んで、あなたの記事は非常に興味深いと便利ですし、私のブログを訪問することを忘れないでください
47. Posted by Kata Kata Cinta   2015年04月28日 12:59
私たちは、このポストを得るために取る読んで概説ポイントを実装する必要があります。
48. Posted by pasang iklan gratis   2015年09月28日 10:58
この情報は私達にとって非常に有益かつ有用です。
49. Posted by Kata Kata Mutiara Cinta   2016年01月28日 10:19
インドネシアの国民の成功を読み、挨拶、私たちへの書き込みをありがとうございました
50. Posted by Kata Kata Remaja   2016年03月07日 23:53
私たちは、このポストを得るために取る読んで概説ポイントを実装する必要があります。
51. Posted by Jasa Percetakan dan Jasa Fotocopy Murah 24 Jam Rawamangun Jakarta   2016年04月01日 00:11
本当に良い品は、私がこのブログであることが幸せです。。。
52. Posted by Kata Kata Remaja   2016年04月11日 23:48
この記事は非常に良いですが、それでは書き続けるし、うまくいけば、このブログが成功になりましょう
53. Posted by iklan gratis   2016年04月30日 17:20
読者と情報を共有するためのおかげで
54. Posted by elektronik   2016年05月07日 19:57
私はこの記事は本当に有益だと思います
55. Posted by Kata Kata Remaja   2016年05月11日 01:06
共有のおかげで、この素晴らしい記事、うまくいけば、この口コミは役に立ちました、私たちのすべてのために有用であり得ます!!!!
56. Posted by Kata Kata Remaja   2016年06月09日 05:18
この記事は非常に良いですが、それでは書き続けるし、うまくいけば、このブログが成功になりましょう
本当に良い品は、私がこのブログであることが幸せです。。。
58. Posted by kata galau   2016年06月23日 04:21
私は本当に私のためにこのウェブサイトの内容は、すべて新しいものと新しいレッスンが好き。非常に増加知識の普及に伴い、提供された情報のためにありがとうございました
59. Posted by Kata Kata Remaja   2016年07月30日 04:49
私は本当に私のためにこのウェブサイトの内容は、すべて新しいものと新しいレッスンが好き。非常に増加知識の普及に伴い、提供された情報のためにありがとうございました
60. Posted by kamera pengintai   2016年08月02日 21:03
これは私が必要とする情報であり
61. Posted by Kata Kata Mutiara   2016年08月04日 04:41
この記事は非常に良いですが、それでは書き続けるし、うまくいけば、このブログが成功になりましょう
62. Posted by Kata Kata Cinta   2016年09月22日 16:49
私は本当に私のためにこのウェブサイトの内容は、すべて新しいものと新しいレッスンが好き。非常に増加知識の普及に伴い、提供された情報のためにありがとうございました
63. Posted by Kata Kata Galau   2016年10月02日 23:51
おお、こんなのもあったんですね。知りませんでした!
64. Posted by Cetak Yasin Murah   2016年10月09日 07:17
私は本当に私のためにこのウェブサイトの内容は、すべて新しいものと新しいレッスンが好き。非常に増加知識の普及に伴い、提供された情報のためにありがとうございました
65. Posted by Cetak Murah Rawamangun Jakarta Timur   2016年10月12日 04:25
本当に良い品は、私がこのブログであることが幸せです。。。
66. Posted by Kata Kata Bijak   2016年10月13日 17:47
共有のおかげで、この素晴らしい記事、うまくいけば、この口コミは役に立ちました、私たちのすべてのために有用であり得ます!!!!
67. Posted by Blog Remaja Indonesia   2016年10月21日 02:05
インドネシアの国民の成功を読み、挨拶、私たちへの書き込みをありがとうございました
68. Posted by Tempat Cetak Murah   2017年03月09日 13:31
おお、こんなのもあったんですね。知りませんでした!
69. Posted by Cetak Spanduk 24 Jam di Jakarta Timur   2017年04月19日 02:51
私は本当に私のためにこのウェブサイトの内容は、すべて新しいものと新しいレッスンが好き。非常に増加知識の普及に伴い、提供された情報のためにありがとうございました

コメントする

名前:
URL:
  情報を記憶: 評価:  顔   星
  絵文字
 
 
プロフィール

Perlが少しだけ出来る気になってます。
JavaScriptはよくわかりません。
Rubyもちんぷんかんぷんです。
Pythonは難しいです。
ActionScript勘弁してください。
Javaあばばばばば。
低級言語できません。

github
記事検索
  • ライブドアブログ