一次反序列化一个项目的json数组流

 小蕃茄的围脖决_485 发布于 2023-02-12 21:15

我将一个大对象数组序列化为json http响应流.现在我想一次一个地从流中反序列化这些对象.是否有任何c#库可以让我这样做?我看过json.net,但似乎我必须立即反序列化完整的对象数组.

[{large json object},{large json object}.....]

澄清:我想一次从流中读取一个json对象并反序列化它.

1 个回答
  • 为了逐步读取JSON,您需要JsonTextReader结合使用a StreamReader.但是,您不一定要从阅读器手动读取所有JSON.您应该能够利用Linq-To-JSON API从阅读器加载每个大对象,以便您可以更轻松地使用它.

    举个简单的例子,假设我有一个看起来像这样的JSON文件:

    [
      {
        "name": "foo",
        "id": 1
      },
      {
        "name": "bar",
        "id": 2
      },
      {
        "name": "baz",
        "id": 3
      }
    ]
    

    从文件中逐步读取它的代码可能如下所示.(在您的情况下,您将使用响应流替换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"]);
            }
        }
    }
    

    以上输出如下:

    1 - foo
    2 - bar
    3 - baz
    

    2023-02-12 21:20 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有