2016-07-10 48 views
1

我想使用jsonlite包和toJSON函數將R列表編碼到json中。我是一個簡單的項目:如何使用jsonlite R軟件包將長度爲1的R向量編碼爲json中的單個值?

list(op='abc') 

我想,要成爲:

{ 
    "op" : "abc" 
} 

相反,我得到:

{ 
    "op" : ["abc"] 
} 

的API,而我正在試圖喂這json扼殺後者,並要求前者。有關如何從jsonlite(或其他R json軟件包)獲取以前行爲的建議?

+1

試試'rjson'包。這是給前者。 – Psidom

+0

這工作。有關如何從jsonlite軟件包中獲取該行爲的任何建議,這似乎具有更好的性能? – seandavi

+1

我認爲這取決於你的數據。看起來,如果你的原始數據是一個數據幀,它也會給出前者。您的數據能否正確轉換爲數據框? – Psidom

回答

2

auto_unbox參數的伎倆與jsonlite包:

toJSON(list(op='abc'),auto_unbox=TRUE) 

產量:

{"op":"abc"} 

更新:根據意見,這種做法可能是更安全,爲什麼一個例子:

> jsonlite::toJSON(list(x=unbox(1),y=c(1,2))) 
{"x":1,"y":[1,2]} 
> jsonlite::toJSON(list(x=unbox(1),y=unbox(c(1,2)))) # expect error here. 
Error: Tried to unbox a vector of length 2 
+2

_「避免出現這種情況通常比較安全,而是使用'unbox()'函數來取消單個元素的排除。一個例外是類AsIs的對象(即包裝在I()中)不會自動拆箱。將單個值標記爲長度爲1的數組。「_ – hrbrmstr

相關問題