jsonliteにもやっとした
このツイートを見て、jsonlite
をちょっと触ってみたのでメモ。
> cat(RJSONIO::toJSON(list(x=1, y=character(0)))) { "x": 1, "y": 1 } #rstats #Wat (hint: do not blame cats)
— Yihui Xie (@xieyihui) May 2, 2014
@kevin_ushey @xieyihui use jsonlite?
— Hadley Wickham (@hadleywickham) May 3, 2014
jsonliteとは?
RでJSONというとRJSONIO
かrjson
ですが、
それを置き換えるべく去年の12月に公開されたパッケージらしいです。
レポジトリ:jeroenooms/jsonlite · GitHub(RJSONIOからフォークしている)
紹介ブログ:OpenCPU - New package: jsonlite. A smart(er) JSON encoder/decoder.
なんかRJSONIO
とかrjson
のいけてない感をなんとかしてくれそうな、
期待感にあふれています。
でも気になったとこ
それはこれ。
> cat(jsonlite::toJSON(jsonlite::fromJSON('{"x":1}'))) { "x" : [ 1 ] }
なんと、fromJSONしてtoJSONした結果が、元と同じにならないのです。
まあこれは、すべてをベクトルとして扱うR的には正しいので、
いいのか悪いのか、何とも言えないところです。
ちなみにRJSONIO
は以下のように、元と同じになります。
> cat(RJSONIO::toJSON(RJSONIO::fromJSON('{"x":1}'))) { "x": 1 }
うーん。。
(そもそもRとJSONが相容れない、という話のような気もしてきましたが、
とりあえず今は深く考えないことにします)
追記
unbox()
を使うといいそうです。すっきり。
jsonliteで要素ひとつだけのベクトルをうまくtoJSON()する - Technically, technophobic.