ฉันต้องการเขียน JSON ไปที่ Stream
โดยสร้างเอกสารอย่างชัดเจน ตัวอย่างเช่น:
var stream = ...;
var writer = new JsonWriter(stream);
writer.BeginArray();
{
writer.BeginObject();
{
writer.String("foo");
writer.Number(1);
writer.String("bar");
writer.Number(2.3);
}
writer.EndObject();
}
writer.EndArray();
สิ่งนี้จะทำให้เกิด:
[
{
"foo": 1,
"bar": 2.3
}
]
ประโยชน์ของแนวทางนี้คือไม่จำเป็นต้องมีสิ่งใดถูกบัฟเฟอร์ในหน่วยความจำ ในสถานการณ์ของฉัน ฉันกำลังเขียน JSON จำนวนมากลงในสตรีม โซลูชันเช่น อันนี้เกี่ยวข้องกับการสร้างอ็อบเจ็กต์ทั้งหมดของคุณในหน่วยความจำ จากนั้นทำให้อ็อบเจ็กต์เป็นอนุกรมเป็นสตริงขนาดใหญ่ในหน่วยความจำ จากนั้นจึงเขียนในที่สุด สตริงนี้ไปยังสตรีมและการรวบรวมขยะ อาจมาจาก LOH ฉันต้องการให้หน่วยความจำของฉันเหลือน้อย โดยเขียนองค์ประกอบต่างๆ ในขณะที่อ่านข้อมูลจากไฟล์/DB/สตรีมอื่น ๆ
วิธีการประเภทนี้มีให้บริการในภาษา C++ ผ่านทาง ไลบรารี Rapidjson
ฉันค้นหาเรื่องนี้มาพอสมควรแล้วและยังไม่พบวิธีแก้ไข