更简单一点的,还是有点复杂,不太符合业务,发帖留念吧。感恩的心。
bool IsJsonIllegal(const char *jsoncontent)
{
stack<char> jsonstr;
const char *p = jsoncontent;
while( *p != '\0')
{
switch(*p)
{
case '{':
p++;
while(*p == ' ')
{
p++;
}
if(*(p) == '"')
{
p--;
jsonstr.push('{');
}
else
{
return false;
}
break;
case '"':
if(jsonstr.empty() || jsonstr.top() != '"')
{
jsonstr.push(*p);
}
else
{
jsonstr.pop();
}
break;
case ']':
if(jsonstr.empty() || jsonstr.top() != '[')
{
return false;
}
else
{
jsonstr.pop();
}
break;
case '}':
if(jsonstr.empty() || jsonstr.top() != '{')
{
return false;
}
else
{
jsonstr.pop();
}
break;
case '\\':
p++;
break;
default:
;
}
p++;
}
if(jsonstr.empty())
{
return true;
}
else
{
return false;
}
}