我有一个数据帧,我想将其转换为.json文件。.json文件有4层包含信息,美化后的文件应该是这样的:
{
"message": {
"message_reference": "Something",
"message_receiver": "Something",
"client_name": "Something",
"debtor_name": "Something",
"booking_reference": "B123456",
"invoice_reference": "I123456",
"transport_direction": "E"
},
"container": {
"shippingcompany_name": "billy",
"container_isotype": "40DV"
},
"inland": {
"destination_name": "companyB",
"loading_discharge": "L"
},
"delivery": {
"terminal_code": "123",
"terminal_name": "123RTM"
}
}我将包含所有信息的原始数据帧拆分为4个独立的数据帧,并制作了4个.json文件,将其存储在新的数据帧中
dfTEST <- data.frame("message_reference" = character(1),
"message_reciever" = character(1),
"client_name" = character(1),
"debtor_name" = character(1),
"booking_reference" = character(1),
"invoice_reference" = character(1),
"transport_direction" = character(1),
"shipingcompany_name" = character(1),
"container_isotype" = character(1),
"destination_name" = character(1),
"loading_dishcarge" = character(1),
"terminal_code" = character(1),
"terminal_name" = character(1))
dfTEST$message_reference <- "Something"
dfTEST$message_reciever <- "Something"
dfTEST$client_name <- "Something"
dfTEST$debtor_name <- "Something"
dfTEST$booking_reference <- "B123456"
dfTEST$invoice_reference <- "I123456"
dfTEST$transport_direction <- "E"
dfTEST$shipingcompany_name <- "billy"
dfTEST$container_isotype <- "40DV"
dfTEST$destination_name <- "Company B"
dfTEST$loading_dishcarge <- "L"
dfTEST$terminal_code <- "123"
dfTEST$terminal_name <- "123RTM"
dfMESSAGE <- dfTEST[c(1,2,3,4,5,6,7)]
dfCONTAINER <- dfTEST[c(8,9)]
dfINLAND <- dfTEST[c(10,11)]
dfDEL <- dfTEST[c(12,13)]
jsMESSAGE <- gsub("\\[|\\]", "", toJSON(dfMESSAGE))
jsCONTAINER <- gsub("\\[|\\]", "", toJSON(dfCONTAINER))
jsINLAND <- gsub("\\[|\\]", "", toJSON(dfINLAND))
jsDEL <- gsub("\\[|\\]", "", toJSON(dfDEL))
dfTOT <- data.frame(message = character(1),
container = character(1),
inland = character(1),
delivery = character(1))
dfTOT$message <- jsMESSAGE
dfTOT$container <- jsCONTAINER
dfTOT$inland <- jsINLAND
dfTOT$delivery <- jsDEL当我将新的数据帧转换成json文件时,它看起来几乎一样,但单独的json文件在它们周围有引号,这使得最终的json文件损坏;
jsTOT <- gsub("\\[|\\]", "", toJSON(dfTOT))
jsTOT <- gsub(pattern = ('\\\\'), replacement = '', x = jsTOT)生成的jsTOT看起来像第一行,而它应该像第二行;
{"message":"{"message_reference":"MESSAGEREFERENCE123","message_reciever":"VanBerkelLogistics","client_name":"Modality Software solutions","debtor_name":"Modality Software solutions"}","container":"{"booking_reference":"B123456","invoice_reference":"I123456"}","inland":"{"transport_direction":"E","shipingcompany_name":"MAERSK"}","delivery":"{"container_isotype":"40DV","destination_name":"Friesland Campina Nutrifeed"}"}
{"message":{"message_reference":"MESSAGEREFERENCE123","message_reciever":"VanBerkelLogistics","client_name":"Modality Software solutions","debtor_name":"Modality Software solutions"},"container":{"booking_reference":"B123456","invoice_reference":"I123456"},"inland":{"transport_direction":"E","shipingcompany_name":"MAERSK"},"delivery":{"container_isotype":"40DV","destination_name":"Friesland Campina Nutrifeed"}}因此,基本上我的问题是:如何删除.json文件中的引号?也许我应该以其他方式构建它,但我不知道如何做到这一点。我使用jsonlite包,我也尝试过rjson包,但这不起作用。任何在好的方向上的帮助都将受到高度的感谢。
发布于 2021-10-26 10:49:58
不要提早转换为JSON。我建议你的dfTOT应该是一个list:
newTOT <- list(message = dfMESSAGE,
container = dfCONTAINER,
inland = dfINLAND,
delivery = dfDEL)
toJSON(newTOT)
# {"message":[{"message_reference":"Something","message_reciever":"Something","client_name":"Something","debtor_name":"Something","booking_reference":"B123456","invoice_reference":"I123456","transport_direction":"E"}],"container":[{"shipingcompany_name":"billy","container_isotype":"40DV"}],"inland":[{"destination_name":"Company B","loading_dishcarge":"L"}],"delivery":[{"terminal_code":"123","terminal_name":"123RTM"}]} https://stackoverflow.com/questions/69721483
复制相似问题