您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

在.NET中解析大型JSON文件

在.NET中解析大型JSON文件

正如您在更新中正确诊断出的那样,问题在于JSON先关闭]然后再打开[以开始下一个集合。这种格式使JSON整体上无效,这就是Json.NET引发错误的原因。

幸运的是,这个问题似乎经常出现,以至于Json.NET实际上具有处理它的特殊设置。如果JsonTextReader直接使用a 来读取JSON,则可以将SupportMultipleContent标志设置为true,然后使用循环分别反序列化每个项目。

这应该使您能够以内存有效的方式成功处理非标准JSON,而不管存在多少个数组或每个数组中有多少个项目。

    using (WebClient client = new WebClient())
    using (Stream stream = client.OpenRead(stringUrl))
    using (StreamReader streamReader = new StreamReader(stream))
    using (JsonTextReader reader = new JsonTextReader(streamReader))
    {
        reader.SupportMultipleContent = true;

        var serializer = new JsonSerializer();
        while (reader.Read())
        {
            if (reader.TokenType == JsonToken.StartObject)
            {
                Contact c = serializer.Deserialize<Contact>(reader);
                Console.WriteLine(c.FirstName + " " + c.LastName);
            }
        }
    }

完整的演示在这里https ://dotnetfiddle.net/2TQa8p

dotnet 2022/1/1 18:20:43 有451人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶