在 R 中将结构化文本文件转换为列式 CSV



我正在编写脚本以将大型文本文件转换为CSV文件。文本文件中的所有数据都以如下所示的块形式显示。这些块中的每一个都由 {} 分隔。我试图做的是读取这些块中的第一个,获取不同的类别,如 GlobalId、MetaDataId 和其余部分,并将它们转换为列标题,然后在这些列标题下对文本文件的其余部分进行排序。

{
"GlobalId": 4222124650675654,
"MetaDataId": "0e1a6cbe-fd3d-4782-af6a-fe3ffceb6a0d",
"vendorId": "",
"vendorName": "Vendor Test 2",
"Uid": "vendortest1",
"statsType": "SUSHI",
"Url": "http://vendortest1.com/sushi/V5",
"RunDay": 6,
"reportName": "JR1, DB1",
"Release": "R5",
"supported": true,
"deleted": false,
"showIP": false,
"trickle": 0
},

我尝试过这个:将多行文本转换为数据框,但没有取得多大成功。

这似乎是可以使用jsonlite读取的json

library(jsonlite)
x <- '{
"GlobalId": 4222124650675654,
"MetaDataId": "0e1a6cbe-fd3d-4782-af6a-fe3ffceb6a0d",
"vendorId": "",
"vendorName": "Vendor Test 2",
"Uid": "vendortest1",
"statsType": "SUSHI",
"Url": "http://vendortest1.com/sushi/V5",
"RunDay": 6,
"reportName": "JR1, DB1",
"Release": "R5",
"supported": true,
"deleted": false,
"showIP": false,
"trickle": 0
}'

返回字段名称:

names(fromJSON(x))
[1] "GlobalId"   "MetaDataId" "vendorId"   "vendorName" "Uid"        "statsType"  "Url"        "RunDay"     "reportName"
[10] "Release"    "supported"  "deleted"    "showIP"     "trickle"   

尽管如果列名要构建data.frame那么库应该能够为您完成工作:

fromJSON(x)

最新更新