おさらい
jsonlite
はすてきですが、要素ひとつのベクトルもリストとして変換してしまいます。
toJSON(list(a=1)) # {"a":[1]}
これを避けるにはunbox()
を使います。
toJSON(list(a=unbox(1))) # {"a":1}
が、unbox()
をいちいち手動でやるのは無駄な努力だと判明しました...
懺悔
前に、ネストしたリストにはrapply
使えばいいだのごちゃごちゃ書きましたが、
jsonliteで要素ひとつだけのベクトルをうまくtoJSON()する - Technically, technophobic.
toJSON()
のauto_unbox
というオプションを使えば自動的にいい感じにやってくれるらしいです。
a <- list( a = 1, b = c(1, 2, 3), c = list( x = 1, y = c(2, 3) ) ) toJSON(a, auto_unbox = TRUE) # {"a":1,"b":[1,2,3],"c":{"x":1,"y":[2,3]}}
Issue立てたら教えてもらいました。お恥ずかしい。適当なこと言ってすみませんでした。。
unbox() recursively · Issue #39 · jeroenooms/jsonlite · GitHub