您可能会遇到一些错误,这些错误似乎与您对递归或JSON的key->
value性质没有很好的了解以及如何与所使用的库相关联。我根本没有测试过此代码,但它应该可以更好地工作。
void CDriverConfigurator::PrintJSonValue( const Json::Value &val ){ if( val.isString() ) { printf( "string(%s)", val.asString().c_str() ); } else if( val.isBool() ) { printf( "bool(%d)", val.asBool() ); } else if( val.isInt() ) { printf( "int(%d)", val.asInt() ); } else if( val.isUInt() ) { printf( "uint(%u)", val.asUInt() ); } else if( val.isDouble() ) { printf( "double(%f)", val.asDouble() ); } else { printf( "unknown type=[%d]", val.type() ); }}bool CDriverConfigurator::PrintJSonTree( const Json::Value &root, unsigned short depth ) { depth += 1; printf( " {type=[%d], size=%d}", root.type(), root.size() ); if( root.size() > 0 ) { printf("n"); for( Json::Value::const_iterator itr = root.begin() ; itr != root.end() ; itr++ ) { // Print depth. for( int tab = 0 ; tab < depth; tab++) { printf("-"); } printf(" subvalue("); PrintJSonValue(itr.key()); printf(") -"); PrintJSonTree( *itr, depth); } return true; } else { printf(" "); PrintJSonValue(root); printf( "n" ); } return true;}


