天天看點

以讀取部落格園随筆備份為例 将xml 序列化成json,再序列化成對象

部落格園随筆備份之後,得到的檔案格式如下:

  

以讀取部落格園随筆備份為例 将xml 序列化成json,再序列化成對象

  我們要讀取上述xml,主要是獲得channel節點下的所有内容,在平時的工作過程中,覺得json資料要比xml更加容易操作些,于是想,能不能将其轉換成json格式,進一步轉換成對象。下一步的工作則是将 rss節點下的内容,轉換為json。

  主要代碼如下:

以讀取部落格園随筆備份為例 将xml 序列化成json,再序列化成對象
以讀取部落格園随筆備份為例 将xml 序列化成json,再序列化成對象

此時json的内容如下:

    

以讀取部落格園随筆備份為例 将xml 序列化成json,再序列化成對象

此時由xml到json的轉換就完成了,下一步,則是如何将json轉換成對象。通過檢視上述json的結構,将每個節點看作一個對象,很容易定義出資料結構,具體如下:

以讀取部落格園随筆備份為例 将xml 序列化成json,再序列化成對象
以讀取部落格園随筆備份為例 将xml 序列化成json,再序列化成對象

最後一步,則是将剛剛得到的json序列化成我們定義的資料結構:

到此為止,我們将xml轉換成對象的工作就完成了,列印讀取的内容:

以讀取部落格園随筆備份為例 将xml 序列化成json,再序列化成對象

問題:

  在實際的測試過程中,發現如果備份檔案中,僅有一個item節點的時候,序列化後的json item部分如下: 

以讀取部落格園随筆備份為例 将xml 序列化成json,再序列化成對象
以讀取部落格園随筆備份為例 将xml 序列化成json,再序列化成對象

此時是不可以直接序列化成List<Channel_Item>對象,針對此情況,不想更多的去改變代碼,在item僅有一個的時候,手動添加一個空節點,此時對應的json為:

以讀取部落格園随筆備份為例 将xml 序列化成json,再序列化成對象
以讀取部落格園随筆備份為例 将xml 序列化成json,再序列化成對象

上述json格式就可以輕松的序列化成List<Channel_Item>對象了。