本文整理汇总了C++中JsonValue::ArrayPut方法的典型用法代码示例。如果您正苦于以下问题:C++ JsonValue::ArrayPut方法的具体用法?C++ JsonValue::ArrayPut怎么用?C++ JsonValue::ArrayPut使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类JsonValue
的用法示例。
在下文中一共展示了JsonValue::ArrayPut方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: RecursiveProc
void JsonParser::RecursiveProc(JsonValue& jsonValue)
{
// initial job
if(m_nRecuLevel == 0)
{
StartParse();
jsonValue.SetValueType(JsonValue::UNKNOWN_VALUE);
}
++m_nRecuLevel;
// initial job
char stackTop = JS_EMPTY;
GetStackTop(m_blockStack, stackTop);
string key, strValue;
long keyLine, valLine;
bool bGetKey = false;
bool bGetSplitor = false;
while(GetToken()) // 获得下一个 m_tokenA 和 m_tokenB
{
// JsonParser 忽略换行, 其它的解析器可能不要忽略
if(m_tokenA.code == "\r\n" ||
m_tokenA.code == "\n" ||
m_tokenA.type == COMMENT_TYPE_1 ||
m_tokenA.type == COMMENT_TYPE_2)
{
continue;
}
/*
* 至此,读取完成 m_tokenA 和 m_tokenB
* 已经合并多个换行
* 已经识别负数
* 已经识别正则表达式
*/
if(m_tokenA.code == "{")
{
m_blockStack.push(JS_BLOCK);
long blockLine = m_tokenA.line;
if(stackTop == JS_EMPTY)
{
jsonValue.SetValueType(JsonValue::MAP_VALUE);
RecursiveProc(jsonValue);
}
else
{
if(stackTop == JS_SQUARE)
{
jsonValue.ArrayPut(JsonValue());
JsonValue& innerValue = jsonValue.GetArrayValue().back();
innerValue.SetValueType(JsonValue::MAP_VALUE);
RecursiveProc(innerValue);
innerValue.line = blockLine;
}
else if(stackTop == JS_BLOCK)
{
jsonValue.MapPut(key, JsonValue());
JsonValue& innerValue = jsonValue[key];
innerValue.SetValueType(JsonValue::MAP_VALUE);
RecursiveProc(innerValue);
bGetKey = false;
bGetSplitor = false;
innerValue.line = keyLine;
}
}
continue;
}
if(m_tokenA.code == "}")
{
bGetKey = false;
bGetSplitor = false;
if(m_blockStack.size() > 0)
{
m_blockStack.pop();
--m_nRecuLevel;
}
return;
}
if(m_tokenA.code == "[")
{
m_blockStack.push(JS_SQUARE);
long squareLine = m_tokenA.line;
if(stackTop == JS_EMPTY)
{
//.........这里部分代码省略.........