原先的项目是做的WP8版本,后来因为需求要改成WP7,一开始用的Newtonsoft.Json.dll便一直出错。
猜想有可能是WP项目版本不同造成的,就找到了WP7.1专用的,仍然出错:无法使用方法之类的错误。
改变策略,使用C#自带的库,自定义了一个转化类,使用DataContractJsonSerializer,结果报错SecurityException。
找遍了谷歌,结果发现,要序列化的类没有设置成public属性,在WP8中不设置可以转化,但是在之下的版本中都会出错。
不仅是json数据,xml数据也是一样,对于的序列化类必须设置成public。
至此,两种序列化反序列化方法都恢复了正常,去掉DataContractJsonSerializer方法,以前的代码就不用动了。
DataContractJsonSerializer在System.Runtime.Serialization.Json命名空间下,.NET Framework 3.5包含在System.ServiceModel.Web.dll中,需要添加对其的引用;.NET Framework 4在System.Runtime.Serialization中。