序列化流或不流

时间:2012-06-05 18:37:08

标签: c#

我找到了两个不同的数据序列化示例。一个是使用流而另一个不是?

stream1.Position = 0;
StreamReader sr = new StreamReader(stream1);
Console.Write("JSON form of Person object: ");
Console.WriteLine(sr.ReadToEnd());

From MSDN

   public static string ToJson(this object obj, int recursionDepth = 100)  
    { 
        JavaScriptSerializer serializer = new JavaScriptSerializer(); 
        serializer.RecursionLimit = recursionDepth; 
        return serializer.Serialize(obj); 
    } 

    public static List<T> ToListObject<T>(this string obj, int recursionDepth = 100) 
    { 
        JavaScriptSerializer serializer = new JavaScriptSerializer(); 
        serializer.RecursionLimit = recursionDepth; 
        List<T> returnList = serializer.Deserialize<List<T>>(obj); 
        return returnList; 
    } 

From StackOverflow

为什么要使用Stream作为额外步骤?

1 个答案:

答案 0 :(得分:1)

如果您实际上正在与支持的文件或网络套接字进行通信,并且数据很大(即您不想加载巨大的数据),则使用Stream或读取器/写入器API可能很方便。记忆中的{1}}。

基于string的API在处理少量数据时更为方便,这在大多数AJAX / HTTP方案中都很常见。请注意,大多数序列化程序没有直接公开string作为输入/输出的API,但这是一种常见的JSON场景,它对您来说很容易。

一个基本上是另一个的便利包装。哪种方式是实现细节,尽管我希望主要的内部代码是基于流或基于读取器/写入器的(允许大型文档没有开销)。

使用最方便的目的。