RのパッケージがXMLからJSONへの変換に適切に機能していないようです。私はRJSONIO、rjson、jsonliteを 'XML'パッケージで試しました。最初にXMLを解析し、XML :: xmlToList()を使用してリストに変換し、それらの3つのパッケージからtoJSON()を使用してJSONに変換しました。XMLをJSONに変換するR
私のXMLファイル:
<?xml version="1.0" encoding="utf-8"?>
<votes>
<row Id="1" PostId="1" VoteTypeId="2" CreationDate="2014-05-13T00:00:00.000" />
<row Id="2" PostId="1" VoteTypeId="2" CreationDate="2014-05-13T00:00:00.000" />
<row Id="3" PostId="3" VoteTypeId="2" CreationDate="2014-05-13T00:00:00.000" />
</votes>
私のソースコード:
library(XML)
library(RJSONIO)
library(rjson)
library(jsonlite)
xml_parse <- xmlTreeParse("~/Downloads/test.xml", useInternalNodes=TRUE)
xml_root <- xmlRoot(xml_parse)
xml_list <- xmlToList(xml_root, simplify = TRUE)
#jsonlite package
xml_jsonlite <- jsonlite::toJSON(xml_list)
write(xml_jsonlite, "test_jsonlite.json")
#RJSONIO package
xml_rjsonio <- RJSONIO::toJSON(xml_list)
write(xml_rjsonio, "test_rjsonio.json")
#rjson package
xml_rjson <- RJSONIO::toJSON(xml_list)
write(xml_rjson, "test_rjson.json")
RJSONIOから変換JSONファイル:
{
"row": {
"Id": "98",
"PostId": "10",
"VoteTypeId": "2",
"CreationDate": "2014-05-14T00:00:00.000"
},
"row": {
"Id": "99",
"PostId": "7",
"VoteTypeId": "5",
"UserId": "111",
"CreationDate": "2014-05-14T00:00:00.000"
}
}
ので、重複するフィールド名を明らかに間違っています。 jsonliteから
変換されたJSONファイル:
{"row":["1","1","2","2014-05-13T00:00:00.000"],
"row.1":["2","1","2","2014-05-13T00:00:00.000"],
"row.2":["3","3","2","2014-05-13T00:00:00.000"]}
代わりに「行」の配列をインクリメントのサブ文書の配列を持つ唯一のフィールド名「行」がなければならないので、奇妙です。それにはフィールド名も含まれていません。
rjsonから変換JSONファイル:
{
"row": {
"Id": "1",
"PostId": "1",
"VoteTypeId": "2",
"CreationDate": "2014-05-13T00:00:00.000"
},
"row": {
"Id": "2",
"PostId": "1",
"VoteTypeId": "2",
"CreationDate": "2014-05-13T00:00:00.000"
}
}
理想的なJSONファイルのような次のようになります。
ソリューションを探してい{"votes" : {
"row" : [
{
"Id" : "1",
"PostId" : "1",
"VoteTypeId" : "2",
"CreationDate" : "2014-05-13T00:00:00.000"
},
{
"Id" : "2",
"PostId" : "1",
"VoteTypeId" : "2",
"CreationDate" : "2014-05-13T00:00:00.000"
}
]
}
}
。どんな助けもありがとうございます。ので、ここでそれは他の人を助けることができるように掲示部分的な解決策だ、
間違ったJSON文字列とXML変換から出てくるデータを取得するために使用したコードを表示することで、適切に理解できるようになります。 – sconfluentus