无法在Xamarin.Mac中使用DataContractJsonSerializer

时间:2017-01-22 09:12:18

标签: json macos xamarin mono 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项目中使用它。

1 个答案:

答案 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;

结果相同。