本文整理汇总了C++中JsonValue::SetValueType方法的典型用法代码示例。如果您正苦于以下问题:C++ JsonValue::SetValueType方法的具体用法?C++ JsonValue::SetValueType怎么用?C++ JsonValue::SetValueType使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类JsonValue
的用法示例。
在下文中一共展示了JsonValue::SetValueType方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: GenStrJsonValue
void JsonParser::GenStrJsonValue(JsonValue& jsonValue, string value)
{
if(value[0] == '\'' || value[0] == '"')
{
if(value[0] == '\'')
value = strtrim(value, string("'"));
else if(value[0] == '"')
value = strtrim(value, string("\""));
/*
* STRING_VALUE 存入的时候会把周围的引号去掉
* 输出的时候统一成 "..."
* 所以要把里面的引号转义
*/
value = strreplace(value, "\\'", "'");
value = strreplace(value, "\\\"", "\"");
value = strreplace(value, "\"", "\\\"");
jsonValue.SetValueType(JsonValue::STRING_VALUE);
}
else if(IsNumChar(value[0]) || value[0] == '-' || value[0] == '+')
{
jsonValue.SetValueType(JsonValue::NUMBER_VALUE);
}
else if(value == "true" || value == "false")
{
jsonValue.SetValueType(JsonValue::BOOL_VALUE);
}
else if(value[0] == '/')
{
jsonValue.SetValueType(JsonValue::REGULAR_VALUE);
}
else
{
jsonValue.SetValueType(JsonValue::UNKNOWN_VALUE);
}
jsonValue.SetStrValue(value);
}
示例2: 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)
{
//.........这里部分代码省略.........