从形式上讲,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。