ZNS*_*ZNS 32 c# serialization json stream json.net
我将一个大对象数组序列化为json http响应流.现在我想一次一个地从流中反序列化这些对象.是否有任何c#库可以让我这样做?我看过json.net,但似乎我必须立即反序列化完整的对象数组.
[{large json object},{large json object}.....]
Run Code Online (Sandbox Code Playgroud)
澄清:我想一次从流中读取一个json对象并反序列化它.
Bri*_*ers 49
为了逐步读取JSON,您需要JsonTextReader
结合使用a StreamReader
.但是,您不一定要从阅读器手动读取所有JSON.您应该能够利用Linq-To-JSON API从阅读器加载每个大对象,以便您可以更轻松地使用它.
举个简单的例子,假设我有一个看起来像这样的JSON文件:
[
{
"name": "foo",
"id": 1
},
{
"name": "bar",
"id": 2
},
{
"name": "baz",
"id": 3
}
]
Run Code Online (Sandbox Code Playgroud)
从文件中逐步读取它的代码可能如下所示.(在您的情况下,您将使用响应流替换FileStream.)
using (FileStream fs = new FileStream(@"C:\temp\data.json", FileMode.Open, FileAccess.Read))
using (StreamReader sr = new StreamReader(fs))
using (JsonTextReader reader = new JsonTextReader(sr))
{
while (reader.Read())
{
if (reader.TokenType == JsonToken.StartObject)
{
// Load each object from the stream and do something with it
JObject obj = JObject.Load(reader);
Console.WriteLine(obj["id"] + " - " + obj["name"]);
}
}
}
Run Code Online (Sandbox Code Playgroud)
以上输出如下:
1 - foo
2 - bar
3 - baz
Run Code Online (Sandbox Code Playgroud)