我是Monotouch的初学者 我想使用DataContractJsonSerializer反序列化Json数据。但我不能在MonoDevelop中引用System.Runtime.Serialization.Json(System.Runtime.Serialization下只有.Formatters)。我引用了System.Runtime.Serialization。我的配置和安装顺序是: 1. iPhone SDK 4.2 2.单声道2.8.2(不是CSDK版本) 3. Monotouch 3.2.4评估 4. MonoDevelop 2.4
有什么问题?
答案 0 :(得分:7)
MonoTouch不附带DataContractJSonSerializer,就像这个序列化程序看起来一样简单,它带来了大量的库。
您可以使用System.Json API,也可以尝试使用NewtonSoft的JSon库。
答案 1 :(得分:0)
如果您像我一样并且正在尝试在跨平台代码库中使用DataContractJsonSerializer,那么将JSON.NET API(又名Newtonsoft.Json)封装在DataContractJsonSerializer中就足够了:
using System;
using System.IO;
using System.Reflection;
using Newtonsoft.Json;
namespace System.Runtime.Serialization.Json
{
public class DataContractJsonSerializer
{
private Type type;
private JsonSerializer js;
public DataContractJsonSerializer (Type t)
{
this.type = t;
this.js = new JsonSerializer();
}
public object ReadObject(Stream stream)
{
StreamReader reader = new StreamReader(stream);
return js.Deserialize(reader, type);
}
public void WriteObject(Stream stream, object o)
{
StreamWriter writer = new StreamWriter(stream);
js.Serialize(writer, o);
writer.Flush ();
}
}
}
当然,这引出了为什么不在任何地方切换到使用JSON.NET API的问题...我对该API的个人经验是它可能比使用DCJS慢(至少在我对Windows Phone的非正式测试中) )。
希望有所帮助!