我正在使用以下内容将我的属性转换为Windows中的JSON并且它运行良好,但现在我尝试在我的Mac上的Xamarin中执行相同操作,但它无法识别DataContractJsonSerializer。下面是我在windows上使用的代码:
public static string JsonSerializer(T t)
{
DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(T));
MemoryStream ms = new MemoryStream();
ser.WriteObject(ms, t);
string jsonString = Encoding.UTF8.GetString(ms.ToArray());
ms.Close();
//Replace Json Date String
string p = @"\\/Date\((\d+)\+\d+\)\\/";
MatchEvaluator matchEvaluator = new MatchEvaluator(ConvertJsonDateToDateString);
Regex reg = new Regex(p);
jsonString = reg.Replace(jsonString, matchEvaluator);
return jsonString;
}
任何人都可以找到解决方法,以便我可以在我的Xamarin.Mac项目中使用它。
答案 0 :(得分:0)
自己解决问题。我像这样使用Json.Net:
//Convert "yyyy-MM-dd HH:mm:ss" String as "\/Date(1319266795390+0800)\/"
string p = @"\d{4}-\d{2}-\d{2}\s\d{2}:\d{2}:\d{2}";
MatchEvaluator matchEvaluator = new MatchEvaluator(ConvertDateStringToJsonDate);
Regex reg = new Regex(p);
jsonString = reg.Replace(jsonString, matchEvaluator);
DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(T));
Newtonsoft.Json.JsonSerializer serializer = new JsonSerializer();
MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(jsonString));
JsonReader reader = new JsonTextReader(new StreamReader(ms));
T obj2 = serializer.Deserialize<T>(reader);
//T obj = (T)ser.ReadObject(ms);
return obj2;
结果相同。