删除使用 toJSON 创建的双引号 json
Remove double quotes json created using toJSON
我像这样使用函数 toJSON
创建一个 json:
data<-toJSON(list("tablename"= unbox("test.csv"),
"header" = header_df,
"data" = test1
))
结果如下:
数据
{"tablename":"test.csv","header":["PassengerId","Pclass","Name","Sex","Age","SibSp","Parch","Ticket","Fare","Cabin","Embarked"],"data":[["892","3","Kelly, Mr. James","male","34.5","0","0","330911","7.8292","","Q"]]}
问题是它为 PassengerID
和 Age
数字添加了双引号。如果我手动将 JSON 修改为:
data<-'{"tablename":"test.csv","header":["PassengerId","Pclass","Name","Sex","Age","SibSp","Parch","Ticket","Fare","Cabin","Embarked"],"data":[[892,"3","Kelly, Mr. James","male",34.5,"0","0","330911","7.8292","","Q"]]}'
然后它工作正常。如何在创建 JSON 时删除 JSON 中某些元素的双引号?
您可以在此处找到输入数据:
你好,你可以在这里找到它link我使用下面的方式加载它
test <- read.csv("~/Titanic R/test.csv")
header_df<-names(test)
test<-test[1,]
test1<-as.matrix(test)
嗯,部分问题是当您执行 as.matrix
时丢失了正确的数据 类;将所有内容转换为字符值。然后 R 不再记得什么是数字。最好避免这一步。
要获得您想要的结果,您需要一个未命名、未装箱的混合类型列表。这是您的数据示例
test <- read.csv("~/../Downloads/test.csv", stringsAsFactors=F)
header_df<-names(test)
test<-test[1,]
library(jsonlite)
data<-toJSON(list("tablename"= unbox("test.csv"),
"header" = header_df,
"data" = Map(unbox, unname(as.list(test)))
))
data
# {"tablename":"test.csv","header":["PassengerId","Pclass","Name","Sex","Age","SibSp","Parch","Ticket","Fare","Cabin","Embarked"],"data":[892,3,"Kelly, Mr. James","male",34.5,0,0,"330911",7.8292,"","Q"]}
根据您的评论,如果您有不止一行数据,此策略应该有效(使用 magtrittr
库使事情变得更容易)
test <- read.csv("~/../Downloads/test.csv", stringsAsFactors=F)
header_df<-names(test)
library(magrittr)
tomixedlist <- . %>% unname %>% lapply(unbox)
dx <- split(test, 1:nrow(test)) %>% lapply(tomixedlist) %>% unname
library(jsonlite)
data<-toJSON(list("tablename"= unbox("test.csv"),
"header" = header_df,
"data" = dx
))
我像这样使用函数 toJSON
创建一个 json:
data<-toJSON(list("tablename"= unbox("test.csv"),
"header" = header_df,
"data" = test1
))
结果如下:
数据
{"tablename":"test.csv","header":["PassengerId","Pclass","Name","Sex","Age","SibSp","Parch","Ticket","Fare","Cabin","Embarked"],"data":[["892","3","Kelly, Mr. James","male","34.5","0","0","330911","7.8292","","Q"]]}
问题是它为 PassengerID
和 Age
数字添加了双引号。如果我手动将 JSON 修改为:
data<-'{"tablename":"test.csv","header":["PassengerId","Pclass","Name","Sex","Age","SibSp","Parch","Ticket","Fare","Cabin","Embarked"],"data":[[892,"3","Kelly, Mr. James","male",34.5,"0","0","330911","7.8292","","Q"]]}'
然后它工作正常。如何在创建 JSON 时删除 JSON 中某些元素的双引号?
您可以在此处找到输入数据:
你好,你可以在这里找到它link我使用下面的方式加载它
test <- read.csv("~/Titanic R/test.csv")
header_df<-names(test)
test<-test[1,]
test1<-as.matrix(test)
嗯,部分问题是当您执行 as.matrix
时丢失了正确的数据 类;将所有内容转换为字符值。然后 R 不再记得什么是数字。最好避免这一步。
要获得您想要的结果,您需要一个未命名、未装箱的混合类型列表。这是您的数据示例
test <- read.csv("~/../Downloads/test.csv", stringsAsFactors=F)
header_df<-names(test)
test<-test[1,]
library(jsonlite)
data<-toJSON(list("tablename"= unbox("test.csv"),
"header" = header_df,
"data" = Map(unbox, unname(as.list(test)))
))
data
# {"tablename":"test.csv","header":["PassengerId","Pclass","Name","Sex","Age","SibSp","Parch","Ticket","Fare","Cabin","Embarked"],"data":[892,3,"Kelly, Mr. James","male",34.5,0,0,"330911",7.8292,"","Q"]}
根据您的评论,如果您有不止一行数据,此策略应该有效(使用 magtrittr
库使事情变得更容易)
test <- read.csv("~/../Downloads/test.csv", stringsAsFactors=F)
header_df<-names(test)
library(magrittr)
tomixedlist <- . %>% unname %>% lapply(unbox)
dx <- split(test, 1:nrow(test)) %>% lapply(tomixedlist) %>% unname
library(jsonlite)
data<-toJSON(list("tablename"= unbox("test.csv"),
"header" = header_df,
"data" = dx
))