我目前正在試圖建立一個服務來檢索和序列化Sitecore的數據項JSON,所以我們的JavaScript代碼可以訪問Sitecore的內容數據。序列化Sitecore.Data.Items.Item以JSON
我已經試過與序列化和JavascriptSerializer直接JSON.Net的對象;都由於遞歸而破滅,可能是由於各種關於兒童財產的循環引用。
我也試圖序列化項目XML(通過item.GetOuterXml()),然後將XML轉換成JSON。轉換工作正常;但它只會檢索在該項目上設置的字段,而不是在_standardvalues中設置的字段。我在序列化之前嘗試調用item.Fields.ReadAll(),以及調用item.Fields.EnsureField(Field.id)的foreach循環;然而,既沒有導致找回丟失的領域。但是,調試代碼; Fields數組似乎包含了其基本模板中的所有繼承字段以及該項目上設置的字段;所以我猜GetOuterXml只是忽略了沒有專門設置的項目上的所有字段。
我越看越這個,它看起來越像我需要一個自定義模型類來封裝數據項和必要的字段,用適當的JSON.Net序列化屬性對它進行裝飾,然後從那裏。雖然這感覺像一個骯髒的黑客。
所以我才走這條路;我想知道這裏的任何人是否有將Sitecore內容項序列化爲JSON以供客戶端使用的經驗,並且是否有一種我錯過的更簡單的方法。任何建設性意見非常感謝。
乾杯, 弗蘭克
純JSON缺乏間接/引用的概念,其基本上意味着它是_impossible_序列化任何僅包含JSON的循環引用。但是,您的JSON需要多少「純度」?如果你只需要能夠從JS反序列化,那麼你可以超越JSON本身,並使用普通的對象引用。然而,除非有人已經完成了這項任務的骯髒工作,否則恐怕你必須至少實現一大塊序列化邏輯。 – 2011-04-05 18:47:46