2016-07-10 3 views
1

jsonlite 패키지와 toJSON 함수를 사용하여 R 목록을 json으로 인코딩하려고합니다. 나는 그 싶습니다jsonlite R 패키지를 사용하여 json에서 길이 1의 R 벡터를 단일 값으로 인코딩하려면 어떻게해야합니까?

list(op='abc') 

이 될 : 내가 좋아하는 간단한 항목이

{ 
    "op" : ["abc"] 
} 

API를 내가 먹이를 시도하고있는 :

{ 
    "op" : "abc" 
} 

을 대신 내가 얻을 이 json은 후자에 질식하고 이전을 요구한다. jsonlite (또는 다른 R json 패키지)에서 이전 동작을 얻는 방법에 대한 제안 사항은 무엇입니까?

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

수율 :

{"op":"abc"} 

업데이트 :

+1

'rjson' 패키지를 사용해보세요. 전자를주고있다. – Psidom

+0

그게 효과가있다. 더 나은 성능을 보이는 jsonlite 패키지에서 그 동작을 얻는 방법에 대한 제안 사항이 있습니까? – seandavi

+1

나는 당신의 데이터에 달려 있다고 생각합니다. 원래 데이터가 데이터 프레임 인 경우 이전 데이터도 제공합니다. 데이터를 데이터 프레임으로 올바르게 변환 할 수 있습니까? – Psidom

답변

2

auto_unbox 인수가 jsonlite 패키지와 함께 트릭을 수행 코멘트를 기반으로,이 방법은 아마 안전, 그리고 왜의 예 :

> 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하기 위해'unbox()'함수를 사용하는 것이 더 안전합니다 .AsIs (즉, wrapped in I())의 객체는 자동으로 unbox되지 않습니다. 단일 값을 길이 1 배열로 표시합니다. "_ – hrbrmstr