cookie9999
@cookie9999 (Y A)

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

PerlでJSON形式のデータを扱うには

Q&A

Closed

『初めてのPerl』を軽く半分読み終えたくらいのプログラミング初心者です。

解決したいこと

Perlで{"id":"ABC","data":"CDE"}というデータから与えられているとき

  • $id = "ABC";
  • $key = "CDE";
    というリテラルを作るにはどうすればいいのでしょうか。ご教示ください。
    ABCやDEFの値はその都度変わりますが、idとkeyという変数名はいつも固定されています。

試したこと

はじめ、{"id":"ABC","key":"CDE"}に対して正規表現を使ってABCとCDEの値を抽出することを考えましたがうまく扱えず、次に、{"id":"ABC","key":"CDE"}がJSON形式のデータであるとこに気づき、JSONモジュールを使うことを考えましたがうまくいきませんでした。

#!/usr/bin/perl -w
use strict;
use utf8;
use JSON;
my $input_json = '{"id":"ABC","key":"CDE"}';
my $data_ref = decode_json( $input_json );
print $data_ref('did');

結果:Not a GLOB reference at test.pl line 7 となり途方にくれてしましました。

0

2Answer

自己解決したのなら、どのように解決したのか書いておいて、後から見た人に役立つようにしませんか?
Qiitaは知識や問題解決方法などを記録・共有する場ですから。

2Like

Comments

  1. 他者の回答にはコメントを書けないのでこちらに書きます。

    my $id = $data_ref->{'id'};
    my $key = $data_ref->{'key'};

    ですね。

Quiitaは質問をクローズにしても閲覧することができるのですね。
結局、『はじめてのPerl』にかかれている知識だけでは解決できませんでした。
あまり理解していませんが、このように書くことで解決しました。

use JSON;
my $input_json = <STDIN>;
my $data_ref = decode_json( $input_json );
my $id = $data_ref->{document_id};
my $key = $data_ref->{document_key};
0Like

Your answer might help someone💌