序列化为流式传输或不流式传输

本文关键字:传输 序列化 | 更新日期: 2023-09-27 18:36:16

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

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

来自 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; 
    } 

从堆栈溢出

为什么要使用流作为附加步骤?

序列化为流式传输或不流式传输

如果您实际上正在与文件或网络套接字等支持对象(例如文件或网络套接字)通信,并且数据很大(即您不想在内存中加载巨大的string),则使用 Stream 或读取器/写入器 API 可能会很方便。

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

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

使用最适合您目的的那种。