我正在与提供音频文件和有关音频文件的各种数据的第三方系统一起工作。我要处理的问题是,数据片段是JSON对象,它们在音频文件的二进制数据中基本上是随机散布的。
未提供有关JSON和二进制数据在何处的信息。
因此,处理此问题的一种方法是简单地遍历文件,每次遇到{
时,我都会尝试从该点解析出一个json对象。如果成功,我将存储已解析的对象并继续操作,否则,我考虑使用{
二进制数据并将其添加到音频队列中。
我通常使用JSON.Net作为JSON内容。如果在输入流上使用JsonTextReader
,则可以从数组中的位置进行解析并获得所需的内容。然后,我将在结束}
但是,JsonTextReader
一次会大块读取。因此,当我检查基础流的位置时,其位置远远超出了结束}
的位置。 JsonTextReader
除了Line和Char属性外,没有其他关于位置的属性,使用起来很麻烦。但是,有一个私人成员_charPos
可以为我提供我想要的东西。
是否有一种获取该信息的替代方法,而无需修改库,无需自己计算行号,或诉诸于使用反射来获取私有成员?