Json.Net如何从流中读取数据,每行作为一个json对象

时间:2017-10-14 23:25:32

标签: c# json json.net

我正在读取一个外部数据文件,用于在gz文件中压缩处理(在S3中托管)。它包含json对象(每行1个,每个文件数百万行)作为下面的模拟数据示例

{"a":"v1","b":"v2"}
{"a":"v3","b":"v2"}

我正在使用以下代码来处理此

JsonSerializer serializer = new JsonSerializer();
using (GZipStream decompressionStream = new GZipStream(data, CompressionMode.Decompress))
{
    using (StreamReader sr = new StreamReader(decompressionStream))
    {
        using (var reader = new JsonTextReader(sr))
        {
            while(reader.Read())
            {
                if(reader.TokenType == JsonToken.StartObject)
                {
                    var o = serializer.Deserialize<DataObject>(reader);
                }
            }
        }
    }
}

DataObject只是一个将数据映射到的POCO数据对象。第一次迭代完美地工作但是我在reader.Read()上的第二次执行时遇到异常。

Additional text encountered after finished reading JSON content

我认为这可能是由于每个json对象末尾的换行符,但不确定如何解决。

非常感谢任何帮助

0 个答案:

没有答案