【发布时间】:2019-09-22 03:12:50
【问题描述】:
我尝试将 XML 数据解析为 JSON 文件,但是当我开始将封送处理的数据写入 JSON 时,它只是重写了 JSON 文件中的数据,因此我得到了包含最后一个 XML 元素的文件。如何将整个数据写入 JSON 文件?
解析 XML 并将数据编组为 JSON 的代码片段
decoder := xml.NewDecoder(file)
resultData := map[string]map[string]string{}
for {
t, _ := decoder.Token()
if t == nil {
break
}
switch et := t.(type) {
case xml.StartElement:
if et.Name.Local == "profile" {
var object XMLProfile
decoder.DecodeElement(&object, &et)
resultData = map[string]map[string]string{
object.ProfileName: {},
}
for _, val := range object.Fields {
resultData[object.ProfileName][val.Name] = val.Value
}
}
}
}
if out, err := json.MarshalIndent(resultData, "", "\t"); err != nil {
panic(err)
} else {
_ = ioutil.WriteFile("test.json", out, 0644)
}
期待 JSON:
{
"Profile 1": {
"role": "user"
},
"Profile 2": {
"role": "user"
},
"Profile 3": {
"role": "admin"
}
}
实际 JSON:
{
"Profile 3": {
"role": "admin"
}
}
【问题讨论】:
-
在循环之后写入文件一次,而不是针对每个元素。
-
@peter 相同的输出。我认为问题出在 resultData 中,但我不知道如何解决它
-
@Vorsprung 相同结果