從形式上講,JSON字符串可能包含轉義字符,例如, 「\ n」,「\ u20AC」。
要處理所有這些情況,您需要使用JSON解析器來解析JSON文本。
在您的應用程序中,可以使用SAX風格(基於事件的)API,即從頭到尾掃描JSON文件,而不生成中間DOM(文檔對象模型)。
您可以檢查支持SAX風格API的rapidjson。
您可以編寫一個CSV編寫器,引用$ rapidjson :: Writer $,從事件輸出CSV字符串。代碼將如下所示:
CsvWriter writer(outputStream);
rapidjson::Reader reader;
reader.Parse<0>(inputStream, writer);
然後,讀者將在解析輸入流時調用writer的成員函數。在你的例子,它將調用的順序的功能:
writer.StartArray();
writer.StartArray();
writer.String("Bcode", 5, true);
writer.String("firstname", 9, true);
writer.String("lastname", 8, true);
writer.EndArray();
writer.StartArray();
writer.String("11234", 5, true);
writer.String("richard", 7, true);
writer.String("nixon", 5, true);
writer.EndArray();
writer.EndArray();
串的第二參數()是字符串的長度。第三個參數表示您是否應該複製字符串。
用這些函數調用寫出自己的CSV格式應該很容易。
最後,注意到,使用SAX風格的API將需要更少的內存消耗,但處理程序可能比DOM版本更難編寫。rapidjson支持您選擇的SAX和DOM樣式API。