【问题标题】:Remove double quotes json created using toJSON删除使用 toJSON 创建的双引号 json
【发布时间】:2015-03-19 18:51:06
【问题描述】:

我使用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"]]}

问题在于它为PassengerIDAge 数字添加了双引号。如果我手动将 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)

【问题讨论】:

  • 请提供示例输入数据以传递给toJSON(),以便生成您的示例reproducible
  • 我更新了您现在将获得此信息的问题

标签: json r jsonlite


【解决方案1】:

嗯,部分问题是当您执行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
))

【讨论】:

  • 感谢您解决了我的数据分类问题,但我做了矩阵,因为我需要在数据之后使用这个双 [[,因为我有多个记录。 data":[[ ...否则我调用的服务不接受我的json。
  • 我添加了一个在这种情况下应该可以工作的新示例。
猜你喜欢
  • 1970-01-01
  • 2014-11-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-01-19
  • 2018-12-15
  • 2015-07-15
相关资源
最近更新 更多