2016-08-10 7 views
0

私はRを初めて使っています。現在、感情分析のためにMicrosoft認知サービスを使用するスクリプトを作成しています。プロジェクトの一環として、私はJSON形式の本文をAPIへのポストリクエストで送信することになっています。以下は、POST要求で送信する必要があるJSON本体の構文です。次のJSON構文のためにRオブジェクトを作成する必要があります

{ 
    "documents": [ 
    { 
     "language": "en", 
     "id": "1", 
     "text": "i love mcdonalrds" 
    }, 
    { 
     "language": "en", 
     "id": "2", 
     "text": "i love kfc" 
    } 
    ] 
} 

後、私はRのオブジェクトの上になく、無駄に作成するために、R内のリストの複数の組み合わせを試してみましたRオブジェクトが

$documents 
$documents[[1]] 
$documents[[1]]$language 
[1] "en" 

$documents[[1]]$id 
[1] "1" 

$documents[[1]]$text 
[1] "i love mcdonalrds" 


$documents[[2]] 
$documents[[2]]$language 
[1] "en" 

$documents[[2]]$id 
[1] "2" 

$documents[[2]]$text 
[1] "i love kfc" 

を見なければならない方法です。私の試みは、このように見えた:

リスト(一覧(ドキュメント=リスト(スコア= 1、ID = 1)))

答えて

1

おそらくlibrary(jsonlite)が助けになることができますか?ネストされたリストの代わりに、mydfと同じ構造のデータフレームを構築することができます(後者が絶対的に必要でない限り - あなたの投稿からは分かりません)。

library(jsonlite) 

json.str <- '{ 
    "documents": [ 
    { 
     "language": "en", 
     "id": "1", 
     "text": "i love mcdonalrds" 
    }, 
    { 
     "language": "en", 
     "id": "2", 
     "text": "i love kfc" 
    } 
    ] 
}' 

mydf <- fromJSON(json.str) 
print(mydf) 
print(toJSON(mydf, pretty=TRUE)) 

参考: https://cran.r-project.org/web/packages/jsonlite/vignettes/json-aaquickstart.html

0

は、このサンプルコードで作成されたようにあなたは、列とフィールドを持つdata.frame内のデータを持っていると仮定すると:

test <- data.frame(
    language=sample(c("de", "en"), 100, replace=TRUE), 
    id=1:100, 
    text=replicate(100, {paste(sample(letters, 140, replace=TRUE), collapse="")}) 
) 

次にあなたが使用することができますlapplysplit.data.frame目的の形式でリストを生成する:

result <- lapply(
    split(test, 1:nrow(test)), 
    function(x){ 
    list(language=x$language, id=x$id, text=x$text) 
    }) 

そして、あなたが投稿し正確なフォーマットを取得するには:

result <- unname(result) 
関連する問題