我目前正在试图建立一个服务来检索和序列化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