mirror of
https://github.com/open-source-parsers/jsoncpp.git
synced 2025-06-27 00:15:36 +02:00
- Made FastWriter output more compact.
- fixed bug in runjsontests.py script.
This commit is contained in:
parent
4cd8bae331
commit
2d4dd281f1
@ -9,21 +9,37 @@ namespace Json {
|
||||
|
||||
class Value;
|
||||
|
||||
/** \brief Abstract class for writers.
|
||||
*/
|
||||
class JSON_API Writer
|
||||
{
|
||||
public:
|
||||
virtual ~Writer();
|
||||
|
||||
virtual std::string write( const Value &root ) = 0;
|
||||
};
|
||||
|
||||
/** \brief Outputs a Value in <a HREF="http://www.json.org">JSON</a> format without formatting (not human friendly).
|
||||
*
|
||||
* The JSON document is written in a single line. It is not intended for 'human' consumption,
|
||||
* but may be usefull to support feature such as RPC where bandwith is limited.
|
||||
* \sa Reader, Value
|
||||
*/
|
||||
class JSON_API FastWriter
|
||||
class JSON_API FastWriter : public Writer
|
||||
{
|
||||
public:
|
||||
std::string write( const Value &root );
|
||||
FastWriter();
|
||||
|
||||
void enableYAMLCompatibility();
|
||||
|
||||
public: // overridden from Writer
|
||||
virtual std::string write( const Value &root );
|
||||
|
||||
private:
|
||||
void writeValue( const Value &value );
|
||||
|
||||
std::string document_;
|
||||
bool yamlCompatiblityEnabled_;
|
||||
};
|
||||
|
||||
/** \brief Writes a Value in <a HREF="http://www.json.org">JSON</a> format in a human friendly way.
|
||||
@ -49,11 +65,12 @@ namespace Json {
|
||||
public:
|
||||
StyledWriter();
|
||||
|
||||
public: // overridden from Writer
|
||||
/** \brief Serialize a Value in <a HREF="http://www.json.org">JSON</a> format.
|
||||
* \param root Value to serialize.
|
||||
* \return String containing the JSON document that represent the root value.
|
||||
*/
|
||||
std::string write( const Value &root );
|
||||
virtual std::string write( const Value &root );
|
||||
|
||||
private:
|
||||
void writeValue( const Value &value );
|
||||
|
@ -116,6 +116,7 @@ rewriteValueTree( const std::string &rewritePath,
|
||||
std::string &rewrite )
|
||||
{
|
||||
//Json::FastWriter writer;
|
||||
//writer.enableYAMLCompatibility();
|
||||
Json::StyledWriter writer;
|
||||
rewrite = writer.write( root );
|
||||
FILE *fout = fopen( rewritePath.c_str(), "wt" );
|
||||
|
@ -67,10 +67,29 @@ std::string valueToQuotedString( const char *value )
|
||||
return std::string("\"") + value + "\"";
|
||||
}
|
||||
|
||||
// Class Writer
|
||||
// //////////////////////////////////////////////////////////////////
|
||||
Writer::~Writer()
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
// Class FastWriter
|
||||
// //////////////////////////////////////////////////////////////////
|
||||
|
||||
FastWriter::FastWriter()
|
||||
: yamlCompatiblityEnabled_( false )
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
FastWriter::enableYAMLCompatibility()
|
||||
{
|
||||
yamlCompatiblityEnabled_ = true;
|
||||
}
|
||||
|
||||
|
||||
std::string
|
||||
FastWriter::write( const Value &root )
|
||||
{
|
||||
@ -129,7 +148,8 @@ FastWriter::writeValue( const Value &value )
|
||||
if ( it != members.begin() )
|
||||
document_ += ",";
|
||||
document_ += valueToQuotedString( name.c_str() );
|
||||
document_ += " : ";
|
||||
document_ += yamlCompatiblityEnabled_ ? ": "
|
||||
: ":";
|
||||
writeValue( value[name] );
|
||||
}
|
||||
document_ += "}";
|
||||
|
@ -83,7 +83,7 @@ if __name__ == '__main__':
|
||||
sys.exit( 1 )
|
||||
|
||||
jsontest_executable_path = os.path.normpath( os.path.abspath( sys.argv[1] ) )
|
||||
if len(sys.argv) > 1:
|
||||
if len(sys.argv) > 2:
|
||||
input_path = os.path.normpath( os.path.abspath( sys.argv[2] ) )
|
||||
else:
|
||||
input_path = None
|
||||
|
Loading…
x
Reference in New Issue
Block a user