json对象转化为字符串过程分析
2021-01-08 18:28
标签:oca 就是 iter pat 成员 values enabled open turn 一、操作如下,可以将json对象转为字符串 二、实现过程 (1)首先看上面代码,先声明个Value对象root, Value类中包含以下4个成员变量: (2)ObjectVale的原型为typedef std::map root["name"] = "咸鱼"; (3)有了map,j接下来就是把map中的key和value分别拿出来组成有规律的字符串。 FastWriter类中write方法的原型: 其中writeValue方法的原型: 我们可以看到,writeValue方法中,case objectValue部分, Value::Members members( value.getMemberNames() )这个方法是取出map_变量中的key,然后底下for循环,遍历key对应的value,最后组成字符串document_。 json对象转化为字符串过程分析 标签:oca 就是 iter pat 成员 values enabled open turn 原文地址:https://www.cnblogs.com/zwj-199306231519/p/14238791.htmlJson::Value root;
root["name"] = "咸鱼";
root["age"] = 100;
string str;
Json::FastWriter fast;
str = fast.write(root);
cout
union ValueHolder
{
Int int_;
UInt uint_;
double real_;
bool bool_;
char *string_;
ObjectValues *map_;
} value_;
ValueType type_ : 8;
int allocated_ : 1;
CommentInfo *comments_;
root["age"] = 100;FastWriter::write( const Value &root )
{
document_ = "";
writeValue( root );
document_ += "\n";
return document_;
}
FastWriter::writeValue( const Value &value )
{
switch ( value.type() )
{
case nullValue:
document_ += "null";
break;
case intValue:
document_ += valueToString( value.asInt() );
break;
case uintValue:
document_ += valueToString( value.asUInt() );
break;
case realValue:
document_ += valueToString( value.asDouble() );
break;
case stringValue:
document_ += valueToQuotedString( value.asCString() );
break;
case booleanValue:
document_ += valueToString( value.asBool() );
break;
case arrayValue:
{
document_ += "[";
int size = value.size();
for ( int index =0; index index )
{
if ( index > 0 )
document_ += ",";
writeValue( value[index] );
}
document_ += "]";
}
break;
case objectValue:
{
Value::Members members( value.getMemberNames() );
document_ += "{";
for ( Value::Members::iterator it = members.begin();
it != members.end();
++it )
{
const std::string &name = *it;
if ( it != members.begin() )
document_ += ",";
document_ += valueToQuotedString( name.c_str() );
document_ += yamlCompatiblityEnabled_ ? ": "
: ":";
writeValue( value[name] );
}
document_ += "}";
}
break;
}
}
上一篇:python词云和数据可视化
下一篇:HTML语义化