Пакет 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"