我正在使用jsoncpp来读写json文件。
为了写作,我使用StyledWriter,它以人类可读的方式编写json。
目前,我正在尝试将一个int数组写入json文件。该文档描述了编写数组值的以下规则:
- 如果为空则打印[]而不缩进和换行
- 如果数组不包含对象值,空数组或其他一些值类型,并且所有值都适合一行,则将数组打印在一行上。
- 否则,如果值不适合一行,或者数组包含object或非空数组,则每行打印一个值。
由于我尝试编写的数组对于一行来说太大了,根据上面的规则,编写器每行打印一个值,这使得我的json丑陋且可读性较差。我希望它将整个数组写成一行或几行,每行有几个值。
我知道jasoncpp是开源的,因此我可以改变作者做我想要的, 但我想知道是否有不同的方法来做到这一点。也许同时使用FastWriter(创建一行json)和StyledWriter?
答案 0 :(得分:-1)
查看json_writer.cpp - 两个writeIndent()方法。
void
StyledStreamWriter::writeIndent()
{
/*
Some comments in this method would have been nice. ;-)
if ( !document_.empty() )
{
char last = document_[document_.length()-1];
if ( last == ' ' ) // already indented
return;
if ( last != '\n' ) // Comments may add new-line
*document_ << '\n';
}
*/
//Removing indent and line feed!!! *document_ << '\n' << indentString_;
}
void
StyledWriter::writeIndent()
{
if ( !document_.empty() )
{
char last = document_[document_.length()-1];
if ( last == ' ' ) // already indented
return;
//Removing indent and line feed!!! if ( last != '\n' ) // Comments may add new-line
//Removing indent and line feed!!! document_ += '\n';
}
document_ += indentString_;
}