C# 如何直接从流中反序列化非常大的JSON数据,而不是一次加载整个JSON
可能重复:C# 如何直接从流中反序列化非常大的JSON数据,而不是一次加载整个JSON,c#,json,json.net,C#,Json,Json.net,可能重复: 以下问题是相关的,但不涉及(至少直接)我试图解决的问题: 我正在尝试使用反序列化潜在的非常大的JSON数据。我不希望将整个文件加载到内存中,并使用JObject.parse(JsonFullString)解析JSON,而是希望逐个令牌读取流令牌并构建对象图。如果您能就如何从流中实现反序列化提出任何建议,我将不胜感激 注意:我的目的是用更好的实现替换以下代码 string jsonData = string.Empty; byte[] buffer
以下问题是相关的,但不涉及(至少直接)我试图解决的问题:
JObject.parse(JsonFullString)
解析JSON,而是希望逐个令牌读取流令牌并构建对象图。如果您能就如何从流中实现反序列化提出任何建议,我将不胜感激
注意:我的目的是用更好的实现替换以下代码
string jsonData = string.Empty;
byte[] buffer = new byte[16 * 1024];
using (MemoryStream ms = new MemoryStream())
{
int read;
while ((read = stream.Read(buffer, 0, buffer.Length)) > 0)
{
ms.Write(buffer, 0, read);
}
jsonData = ASCIIEncoding.ASCII.GetString(ms.ToArray());
}
JObject jObject = JObject.Parse(jsonData);
var entities = from e in jObject.Root
select e;
好主意!
我认为你能做的是:
这并不是说我不介意投票,而是我看到的json解析器就是这样工作的。很高兴知道你们认为我错在哪里,因为生活并不是那么容易。这只是一个简单的例子
{“delimeter1”:“,”和“delimeter2”:“}”}
。还有数组、数组数组、嵌套对象、转义非ascii字符等。