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
library ( "jsonlite" )
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" ]
}'
data <- fromJSON (json_text)
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
library ( "jsonlite" )
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" ]
}'
data <- fromJSON (json_text)
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
library (rjson)
data_frame <- data.frame (col1= c (1: 5),
col2= letters [1:5],
col3= c ( "Commerce" ,
"Humanities" ,
"CSE" ,
"Commerce" ,
"Humanities" )
)
print ( "Data Frame" )
print (data_frame)
json_obj = toJSON (data_frame)
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
library (jsonlite)
list_obj <- list (ob1= c (1: 3),
ob2= "Yashika" ,
ob3= c ( TRUE , FALSE ),
ob4= list (ele1= "x" ,
ele2= "y" ))
print ( "List" )
print (list_obj)
json_obj = toJSON (list_obj)
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\"}}"
Last Updated :
16 Sep, 2022
Like Article
Save Article
Share your thoughts in the comments
Please Login to comment...