2017-01-18 6 views
-1

Я хочу создать данные JSON с использованием пакета jsonlite R для загрузки в DynamoDB с использованием Python. Я хочу, чтобы данные были в структуре, показанной ниже. Как я могу создать это в R? Я попытался создать фрейм данных, в котором один из столбцов является списком и меняет кадр данных на json, но результат не в нужном формате. Я также попытался преобразовать список, содержащий список, но структура выходного json не является тем, что я хочу.R jsonlite: создать данные JSON в определенном формате

[ 
{ 
    "ID": 100, 
    "title": "aa", 
    "more": { 
     "interesting":"yes", 
     "new":"no", 
     "original":"yes" 
    } 
}, 

{ 
    "ID": 110, 
    "title": "bb", 
    "more": { 
     "interesting":"no", 
     "new":"yes", 
     "original":"yes" 
    } 
}, 

{ 
    "ID": 200, 
    "title": "cc", 
    "more": { 
     "interesting":"yes", 
     "new":"yes", 
     "original":"no" 
    } 
    } 
] 

Вот мой образец данных и то, что я пробовал:

library(jsonlite) 

ID=c(100,110,200) 
Title=c("aa","bb","cc") 
more=I(list(Interesting=c("yes","no","yes"),new=c("no","yes","yes"),original=c("yes","yes","no"))) 

a=list(ID=ID,Title=Title,more=more) 
a=toJSON(a) 
write(a,"temp.json") # this does not give the structure I want 

ответ

2

это будет производить то, что вам нужно:

library(jsonlite) 

ID=c(100,110,200) 
Title=c("aa","bb","cc") 

df <- data.frame(ID, Title) 
more=data.frame(Interesting=c("yes","no","yes"),new=c("no","yes","yes"),original=c("yes","yes","no")) 
df$more <- more 

toJSON(df) 

выход:

[{ 
     "ID": 100, 
     "Title": "aa", 
     "more": { 
      "Interesting": "yes", 
      "new": "no", 
      "original": "yes" 
     } 
    }, { 
     "ID": 110, 
     "Title": "bb", 
     "more": { 
      "Interesting": "no", 
      "new": "yes", 
      "original": "yes" 
     } 
    }, { 
     "ID": 200, 
     "Title": "cc", 
     "more": { 
      "Interesting": "yes", 
      "new": "yes", 
      "original": "no" 
     } 
    } 
]