首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将C#匿名类型序列化为JSON字符串?

如何将C#匿名类型序列化为JSON字符串?
EN

Stack Overflow用户
提问于 2008-12-02 03:48:33
回答 9查看 130.8K关注 0票数 171

我尝试使用以下代码将匿名类型序列化为JSON:

代码语言:javascript
复制
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框架文档。

我不能将属性应用于匿名类型(据我所知)。有没有其他方法来做这个序列化,或者我遗漏了什么?

EN

Stack Overflow用户

发布于 2011-03-28 23:20:56

代码语言:javascript
复制
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);
        }
    }
}
票数 -2
EN
查看全部 9 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/331976

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档