无法在 Xamarin.Mac 中使用 DataContractJsonSerializer
Unable to use DataContractJsonSerializer in Xamarin.Mac
我在 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 项目中使用它。
我自己解决了问题。我这样使用 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;
结果相同。
我在 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 项目中使用它。
我自己解决了问题。我这样使用 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;
结果相同。