Net::Twitter->updateのresをMojo::JSONに通すとidがズレる
TweetのIDはMojo::JSONを通る過程で丸められてしまう事がある、という話。
use feature 'say'; use Net::Twitter; use Mojo::JSON 'j'; my $nt = Net::Twitter->new( ... ); my $res = $nt->update( scalar localtime ); say $res->{id}; => 362827222706438144 say j( j( $res ) )->{id}; => 3.62827222706438e+17
JSON になったデータを見てみると特に間違ってはいないので、 JSON -> hashref の変換時に丸まるのだと考えられる。従ってこのデータを元にTweetを探すと、思ったように動かない。
解決としては、 id_str を使えば良い。 id_str はその名の通り文字列なので、数値として丸められることはない。
say $res->{id}; => 362827222706438144 say j( j( $res ) )->{id_str}; => 362827222706438144
特に、得た結果を JSON で格納しておくときなどにハマる、かもしれない。というかハマった、という記録。