我尝试使用以下代码将匿名类型序列化为JSON:
var serializer = new DataContractJsonSerializer(thing.GetType());
var ms = new MemoryStream();
serializer.WriteObject(ms, thing);
var json = Encoding.Default.GetString(ms.ToArray()); 但是,当执行此命令时,我会得到以下异常:
类型'<>f__AnonymousType1`3[System.Int32,System.Int32,System.Object[]]‘不能序列化。考虑用DataContractAttribute属性标记它,并用DataMemberAttribute属性标记要序列化的所有成员。有关其他支持的类型,请参阅微软.NET框架文档。
我不能将属性应用于匿名类型(据我所知)。有没有其他方法来做这个序列化,或者我遗漏了什么?
发布于 2011-03-28 23:20:56
public static class JsonSerializer
{
public static string Serialize<T>(this T data)
{
try
{
DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(T));
var stream = new MemoryStream();
serializer.WriteObject(stream, data);
string jsonData = Encoding.UTF8.GetString(stream.ToArray(), 0, (int)stream.Length);
stream.Close();
return jsonData;
}
catch
{
return "";
}
}
public static T Deserialize<T>(this string jsonData)
{
try
{
DataContractJsonSerializer slzr = new DataContractJsonSerializer(typeof(T));
var stream = new MemoryStream(Encoding.UTF8.GetBytes(jsonData));
T data = (T)slzr.ReadObject(stream);
stream.Close();
return data;
}
catch
{
return default(T);
}
}
}https://stackoverflow.com/questions/331976
复制相似问题