序列化为流式传输或不流式传输
本文关键字:传输 序列化 | 更新日期: 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 的常见方案,因此对您来说很容易。
一个基本上是另一个的便利包装。哪种方式是一个实现细节,尽管我希望主要的内部代码是基于流或读取器/写入器的(以允许没有开销的大型文档)。
使用最适合您目的的那种。