我似乎有問題,反序列化這個XML:deserialise嵌套的XML
<Parameters>
<AParameters>
</AParameters>
<BParameters>
</BParameters>
</Parameters>
成AParameters和BParameters水合不正確。在這種嵌套的情況下,我有什麼需要考慮的嗎?
我似乎有問題,反序列化這個XML:deserialise嵌套的XML
<Parameters>
<AParameters>
</AParameters>
<BParameters>
</BParameters>
</Parameters>
成AParameters和BParameters水合不正確。在這種嵌套的情況下,我有什麼需要考慮的嗎?
當您使用JsonConvert.SerializeXmlNode(doc)
你的XML文檔轉換成JSON字符串,則生成看起來像這樣JSON:
{
"?xml":
{
"@version":"1.0"
},
"Parameters":
{
"AParameters":
{
...
},
"BParameters":
{
...
}
}
}
注意,Parameters
數據不是在根,但外內目的。因此,當您嘗試將JSON直接反序列化到Parameters
類時,沒有一個屬性排隊,因爲它們都進一步向下。由於JSON.Net無法將類中的字段名稱與JSON數據進行匹配,因此它只使用默認值。
要解決這個問題,你可以做兩件事之一。
1)修復您的XML到JSON轉換,以便Parameters
數據位於根目錄。爲了使它工作,JSON數據需要如下所示(下圖)。說起來容易做起來難。
{
"AParameters":
{
...
},
"BParameters":
{
...
}
}
2)創建一個包裝類並反序列化到那個。這很容易。例如:
class Wrapper
{
public Parameters Parameters { get; set; }
}
然後反序列化這樣的:
Parameters p = JsonConvert.DeserializeObject<Wrapper>(jsonString).Parameters;
謝謝。是的,我認爲是這樣。 '包裝'的方法完美。謝謝! – cs0815
你不應該讓類爲Serializable?還有什麼是你面臨的問題,任何異常或錯誤? – srsyogesh