Convert R objects to/from JSON in jsonlite
In this article, we are going to know how to convert R objects to/from JSON in jsonlite using the R programming language.
jsonlite package
The jsonlite package in R is used to simulate the conversion to and from the JSON data objects in R. It can be converted easily to other data objects. The package can be downloaded and installed into the R working space using the following command.
install.packages("jsonlite")
Parse JSON in R
The JSON text in R is enclosed within the curly braces surrounded by string. The fromJSON() method in the rjson package is used to convert the JSON data into a text string. Each key becomes the header and the values to which they correspond are displayed as strings under the row numbers. This method performs the deserialization of the JSON data. It converts the data into an equivalent R object. The method has the following syntax :
Syntax: fromJSON(json-text)
Parameter :
json-text – JSON content or file name.
R
# Importing jsonlite library ( "jsonlite" ) # Declaring the json text json_text <- '{ "ID" : [ "1" , "2" , "3" , "4" , "5" ], "User_name" : [ "A" , "B" , "C" , "D" , "E" ], "Marks" : [34, 64, 24, 68, 76], "Branch" : [ "Commerce" , "Science" , "Humanities" , "Non-medical" , "Humanities" ] }' # Reading the json text data <- fromJSON (json_text) # Printing json data print ( "JSON data" ) print (data) |
Output:
[1] "JSON data" > print(data) $ID [1] "1" "2" "3" "4" "5" $User_name [1] "A" "B" "C" "D" "E" $Marks [1] 34 64 24 68 76 $Branch [1] "Commerce" "Science" "Humanities" "Non-medical" "Humanities"
Convert JSON text into a data frame
The JSON text can also be converted to a data frame. The R object can be used to visualize data in a much more organized tabular structure. After the conversion of the JSON text, it can be subjected to the as.data.frame() method which coerces it into a data frame object. The keys of the JSON text are displayed as column headers of the data frame and the values are the cell values.
Syntax: as.data.frame(data)
Parameter:
data – Data to be converted into data frame
R
# Importing jsonlite library ( "jsonlite" ) # declaring the json text json_text <- '{ "ID" : [ "1" , "2" , "3" , "4" , "5" ], "User_name" : [ "A" , "B" , "C" , "D" , "E" ], "Marks" : [34, 64, 24, 68, 76], "Branch" : [ "Commerce" , "Science" , "Humanities" , "Non-medical" , "Humanities" ] }' # reading the json text data <- fromJSON (json_text) # converting data into data frame data_frame <- as.data.frame (data) print ( "JSON dataframe" ) print (data_frame) |
Output:
ID User_name Marks Branch 1 1 A 34 Commerce 2 2 B 64 Science 3 3 C 24 Humanities 4 4 D 68 Non-medical 5 5 E 76 Humanities
Convert data objects into the JSON text object
The toJSON() method can be used to convert the data objects into the JSON text object. The method has the following syntax :
Syntax: toJSON(R-object-text)
Parameters :
R-object-text – The data contained in R object.
R
# Importing rjson library (rjson) # creating a data frame data_frame <- data.frame (col1= c (1: 5), col2= letters [1:5], col3= c ( "Commerce" , "Humanities" , "CSE" , "Commerce" , "Humanities" ) ) # printing the data frame print ( "Data Frame" ) print (data_frame) # converting to json object json_obj = toJSON (data_frame) # printing the json print ( "JSON" ) print (json_obj) |
Output:
[1] "Data Frame" col1 col2 col3 1 1 a Commerce 2 2 b Humanities 3 3 c CSE 4 4 d Commerce 5 5 e Humanities [1] "JSON" [1] "{\"col1\":[1,2,3,4,5],\"col2\":[\"a\",\"b\",\"c\",\"d\",\"e\"],\"col3\":[\"Commerce\",\"Humanities\",\"CSE\",\"Commerce\",\"Humanities\"]}"
Convert list objects into JSON data
The list objects can also be coerced to the JSON data strings by the toJSON() method. It may even be a multi-level list.
Syntax: toJSON(data)
Parameter:
data – data to be converted into JSON data.
R
# Importing jsonlite library (jsonlite) # creating a data frame list_obj <- list (ob1= c (1: 3), ob2= "Yashika" , ob3= c ( TRUE , FALSE ), ob4= list (ele1= "x" , ele2= "y" )) print ( "List" ) print (list_obj) # converting to json object json_obj = toJSON (list_obj) # printing json print ( "JSON" ) print (json_obj) |
Output:
[1] "List" $ob1 [1] 1 2 3 $ob2 [1] "Yashika" $ob3 [1] TRUE FALSE $ob4 $ob4$ele1 [1] "x" $ob4$ele2 [1] "y" [1] "JSON" [1] "{\"ob1\":[1,2,3],\"ob2\":\"Yashika\",\"ob3\":[true,false],\"ob4\":{\"ele1\":\"x\",\"ele2\":\"y\"}}"