วิธีรับข้อมูลตำแหน่งโดยละเอียดจาก JsonTextReader

ฉันกำลังทำงานร่วมกับระบบของบริษัทอื่นที่ให้บริการไฟล์เสียงและข้อมูลต่างๆ เกี่ยวกับไฟล์เสียง ปัญหาที่ฉันกำลังเผชิญคือชิ้นส่วนของข้อมูลเป็นออบเจ็กต์ JSON ซึ่ง สุ่มโดยพื้นฐาน ทั่วทั้งข้อมูลไบนารี่ของไฟล์เสียง

ไม่มีการให้ข้อมูลว่า JSON อยู่ที่ไหนและข้อมูลไบนารีอยู่

ดังนั้นวิธีหนึ่งในการจัดการกับสิ่งนี้คือเพียงแค่เข้าไปดูไฟล์ และทุกครั้งที่ฉันพบ { ฉันจะพยายามแยกอ็อบเจ็กต์ json จากจุดนั้น ถ้าฉันประสบความสำเร็จ ฉันจะเก็บออบเจ็กต์ที่แยกวิเคราะห์และดำเนินการต่อ ไม่เช่นนั้นฉันจะพิจารณาข้อมูลไบนารี { และเพิ่มลงในคิวเสียง

ฉันมักจะใช้ JSON.Net สำหรับเนื้อหา JSON ของฉัน ถ้าฉันใช้ JsonTextReader กับอินพุตสตรีม ฉันสามารถแยกวิเคราะห์จากตำแหน่งในอาร์เรย์และรับสิ่งที่ต้องการได้ จากนั้นฉันจะเริ่มอ่านอีกครั้งจากไบต์หลังจากปิด }

อย่างไรก็ตาม JsonTextReader จะอ่านเป็นชิ้นใหญ่ในแต่ละครั้ง ดังนั้นเมื่อฉันตรวจสอบตำแหน่งของกระแสที่อ้างอิงอยู่ ตำแหน่งของกระแสนั้นอยู่เลยจุดปิด } JsonTextReader ไม่มีคุณสมบัติใด ๆ ที่เกี่ยวข้องกับตำแหน่ง นอกเหนือจากคุณสมบัติ Line และ Char ซึ่งจะยุ่งยากในการใช้งาน อย่างไรก็ตาม มีสมาชิกส่วนตัว _charPos ที่จะมอบสิ่งที่ฉันต้องการให้กับฉันอย่างแน่นอน

มีทางเลือกอื่นในการรับข้อมูลนั้น โดยไม่ต้องแก้ไขไลบรารี โดยไม่ต้องคำนวณหมายเลขบรรทัดด้วยตัวเอง หรือใช้การสะท้อนกลับเพื่อเข้าถึงสมาชิกส่วนตัวหรือไม่


person whatsisname    schedule 01.11.2018    source แหล่งที่มา
comment
คุณช่วยกรุณาวางสตริง json เป็นตัวอย่างและข้อมูลใดบ้างที่คุณต้องการดึงออกมา? ไม่จำเป็นต้องใช้สตริง json แบบเต็ม เพียงแค่ข้อความที่ตัดตอนมา   -  person Rui Jarimba    schedule 01.11.2018
comment
มันน่ารำคาญใช่ไหม? IJsonLineInfo ก็เหมือนกับ IXmlLineInfo โดยจะให้หมายเลขบรรทัดและตำแหน่ง แต่ไม่ใช่ ดัชนีอักขระซึ่งจะทำให้มนุษย์อ่านได้น้อยลง แต่มีประโยชน์มากกว่าในทางปฏิบัติ _charPos ไม่ใช่สิ่งที่คุณต้องการ แต่เป็นดัชนีในบัฟเฟอร์ _chars   -  person dbc    schedule 01.11.2018
comment
@RuiJarimba: JSON ที่แท้จริงนั้นไม่สำคัญจริงๆ เพราะมันค่อนข้างธรรมดา ปัญหาคือมันสลับกับข้อมูลไบนารีที่ไม่ใช่ json   -  person whatsisname    schedule 01.11.2018
comment
@dbc: คุณพูดถูก _charPos ใช้งานได้ก็ต่อเมื่อวัตถุทั้งหมดน้อยกว่าขนาดการอ่านของ JsonTextReader ซึ่งทำให้ปัญหาของฉันแย่ลง   -  person whatsisname    schedule 02.11.2018