gpt4 book ai didi

c# - 如何从 JsonTextReader 中获取详细的位置信息

转载 作者:行者123 更新时间:2023-12-05 07:28:57 24 4
gpt4 key购买 nike

我正在使用提供音频文件和有关音频文件的各种数据的第三方系统。我要处理的问题是数据片段是 JSON 对象,它们本质上是随机分布在音频文件的二进制数据中。

没有提供有关 JSON 和二进制数据所在位置的信息。

因此,处理此问题的一种方法是简单地遍历文件,每次遇到 { 时,我都会尝试从该点解析出一个 json 对象。如果我成功了,我会存储已解析的对象并继续,否则我会考虑 { 二进制数据并将其添加到音频队列。

我通常将 JSON.Net 用于我的 JSON 内容。如果我在我的输入流上使用 JsonTextReader,我可以从我在数组中的位置解析并获得我需要的东西。然后我会在关闭 }

之后再次从字节开始读取

但是,JsonTextReader 将一次读取大块。因此,当我检查底层流的位置时,它的位置远远超出了结束 }JsonTextReader 除了 Line 和 Char 属性外,没有任何关于其位置的属性,使用起来会很麻烦。但是,有一个私有(private)成员 _charPos 可以提供我想要的东西。

有没有另一种方法可以获取该信息,无需修改库,无需自己计算行号,或者诉诸使用反射来获取私有(private)成员?

最佳答案

你的 json 阅读器应该从底层流构建,这应该给你一个独立于 JsonTextReader 的有用位置

using (var reader = new StreamReader(filePath))
{
using (JsonReader jr = new JsonTextReader(reader))
{
while (jr.Read())
{
console.log($"Progress is {reader.BaseStream.Position} bytes");
}
}
}

关于c# - 如何从 JsonTextReader 中获取详细的位置信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53108483/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com