首页 > 解决方案 > JsonConvert 反序列化 Avro 文件得到“解析值时遇到意外字符:O. Path '', line 0, position 0。” 错误

问题描述

我正在处理一个 C# 项目,需要从 .avro 文件中读取来自谷歌云存储桶的数据。但是,当我使用 Newtonsoft.Json 反序列化对象时,
JsonConvert.DeserializeObject<T>(Encoding.UTF8.GetString(stream.ToArray())); 它给了我错误:“解析值时遇到意外字符:O. Path '', line 0, position 0。” . 我想我的 .avro 文件肯定有一些格式问题,但是在我上传到avro 查看器之后,它完全没问题并且能够很好地转换为 json 格式。经过调试,我得到了 JsonConvert.cs 文件中的值,public static object? DeserializeObject(string value, Type? type, JsonSerializerSettings? settings)函数,字符串值有些显示如下:

Obj avro.codec null avro.schema� "{"
type ": "
record ", "
name ": "
NetworkOptimizationPlan ", "
fields ": [{"
name ": "...
__fastavro_parsed ": true}���|O;��3_��,5�]P��   ��� �I@��8��8X@��@$��S�K

我的代码在这里:

   var stream = new MemoryStream();
   Uri fileLink = new Uri(gcsLocation);
   var path = String.Join("", fileLink.Segments, 2, fileLink.Segments.Length - 2);
   await _storageClient.DownloadObjectAsync(_bucketName, path, stream);
   return JsonConvert.DeserializeObject<T>(Encoding.UTF8.GetString(stream.ToArray()));

有谁知道我的代码有什么问题或使用 c# 反序列化 avro 文件的更好方法?太感谢了!

标签: c#serializationavro

解决方案


推荐阅读