Пакет jsonlite, примеры применения
Возьмем файл CATALOG. JSON:
{
"CATALOG": {
"BOOK": [
{
"-type": "paper",
"-lang": "ru",
"TITLE": "Война и мир",
"AUTHOR": "",
"BINDING": "массовое издание",
"PAGES": "1000",
"PRICE": "$50"
},
{
"-type": "paper",
"-lang": "en",
"TITLE": "The Adventures of Huckleberry Finn",
"AUTHOR": "Mark Twain",
"BINDING": "mass market paperback",
"PAGES": "298",
"PRICE": "$5.49"
},
{
"-type": "paper",
"TITLE": "Moby-Dick",
"AUTHOR": "Herman Melville",
"BINDING": "hardcover",
"PAGES": "724",
"PRICE": "$9.95"
},
{
"-type": "digital",
"TITLE": "Fight Club",
"AUTHOR": "Chuck Palahniuk",
"FORMAT": "PDF",
"PAGES": "194",
"PRICE": "$1.35"
}
]
}
}
> library("jsonlite")
> json<-fromJSON("catalog. json")
> json
$CATALOG
$CATALOG$BOOK
- type - lang TITLE AUTHOR
1 paper ru Война и мир
2 paper en The Adventures of Huckleberry Finn Mark Twain
3 paper <NA> Moby-Dick Herman Melville
4 digital <NA> Fight Club Chuck Palahniuk
BINDING PAGES PRICE FORMAT
1 массовое издание 1000 $50 <NA>
2 mass market paperback 298 $5.49 <NA>
3 hardcover 724 $9.95 <NA>
4 <NA> 194 $1.35 PDF
> class(json)
[1] "list"
> class(json$CATALOG$BOOK)
[1] "data. frame"
> catalog<-json$CATALOG$BOOK
> catalog$TITLE
[1] "Война и мир" "The Adventures of Huckleberry Finn"
[3] "Moby-Dick" "Fight Club"
Теперь возьмем файл посложнее KONTORA. JSON:
{
"k_firms": {
"k_firm": [{
"-firm_num": "1",
"-firm_name": "Альфа",
"-firm_addr": "Москва",
"k_contract": [{
"-contract_num": "1",
"-contract_date": "01.11.2008"
},
{
"-contract_num": "2",
"-contract_date": "02.11.2008"
},
{
"-contract_num": "3",
"-contract_date": "03.11.2008"
}
]
},
{
"-firm_num": "2",
"-firm_name": "Бета",
"-firm_addr": "Казань",
"k_contract": {
"-contract_num": "4",
"-contract_date": "04.11.2008"
}
},
{
"-firm_num": "4",
"-firm_name": "Дельта",
"-firm_addr": "Лондон",
"k_contract": {
"-contract_num": "7",
"-contract_date": "07.11.2008"
}
},
{
"-firm_num": "6",
"-firm_name": "Эпсилон",
"-firm_addr": "Рига",
"k_contract": {
"-contract_num": "8",
"-contract_date": "08.11.2008"
}
}
]
}
}
> kontora<-fromJSON("kontora. json") > class(kontora) [1] "list" > kontora $k_firms $k_firms$k_firm - firm_num - firm_name - firm_addr k_contract 1 1 Альфа Москва 1, 2, 3, 01.11.2008, 02.11.2008, 03.11.2008 2 2 Бета Казань 4, 04.11.2008 3 4 Дельта Лондон 7, 07.11.2008 4 6 Эпсилон Рига 8, 08.11.2008 > firms<-kontora$k_firms$k_firm > class(firms) [1] "data. frame" > firms - firm_num - firm_name - firm_addr k_contract 1 1 Альфа Москва 1, 2, 3, 01.11.2008, 02.11.2008, 03.11.2008 2 2 Бета Казань 4, 04.11.2008 3 4 Дельта Лондон 7, 07.11.2008 4 6 Эпсилон Рига 8, 08.11.2008 > firms[1] - firm_num 1 1 2 2 3 4 4 6 > firms[2] - firm_name 1 Альфа 2 Бета 3 Дельта 4 Эпсилон > firms[3] - firm_addr 1 Москва 2 Казань 3 Лондон 4 Рига > firms[4] k_contract 1 1, 2, 3, 01.11.2008, 02.11.2008, 03.11.2008 2 4, 04.11.2008 3 7, 07.11.2008 4 8, 08.11.2008 > class(firms[4]) [1] "data. frame" > firms["k_contract"] k_contract 1 1, 2, 3, 01.11.2008, 02.11.2008, 03.11.2008 2 4, 04.11.2008 3 7, 07.11.2008 4 8, 08.11.2008 > contracts<-firms["k_contract"] > contracts[1] k_contract 1 1, 2, 3, 01.11.2008, 02.11.2008, 03.11.2008 2 4, 04.11.2008 3 7, 07.11.2008 4 8, 08.11.2008 > contracts[[1]] [[1]] - contract_num - contract_date 1 1 01.11.2008 2 2 02.11.2008 3 3 03.11.2008 [[2]] [[2]]$`-contract_num` [1] "4" [[2]]$`-contract_date` [1] "04.11.2008" [[3]] [[3]]$`-contract_num` [1] "7" [[3]]$`-contract_date` [1] "07.11.2008" [[4]] [[4]]$`-contract_num` [1] "8" [[4]]$`-contract_date` [1] "08.11.2008" > contracts[[1]][[1]] - contract_num - contract_date 1 1 01.11.2008 2 2 02.11.2008 3 3 03.11.2008 > class(contracts[[1]][[1]]) [1] "data. frame" > contracts[[1]][[1]][1] - contract_num 1 1 2 2 3 3 > contracts[[1]][[1]][2] - contract_date 1 02.11.2008 2 02.11.2008 3 02.11.2008 > contracts[[1]][[1]]["-contract_num"] - contract_num 1 1 2 2 3 3 |
> class(contracts[[1]][[1]]["-contract_num"]) [1] "data. frame" > contracts[[1]][[1]]["-contract_num"][1] - contract_num 1 1 2 2 3 3 > contracts[[1]][[1]]["-contract_num"][[1]] [1] "1" "2" "3" > class(contracts[[1]][[1]]["-contract_num"][[1]]) [1] "character" > contracts[[1]][[1]]["-contract_num"][[1]][1] [1] "1" |


