}
i--;
if(m_cur->m_objVal=="true" || m_cur->m_objVal=="false")
{
node->type=BOOLA;
}
else
{
node->type=NAMEDOBGA;
}
}
else
{
bool bInQ=false;
while(1)
{
if(m_str[i]=='\"' || m_str[i]=='\'')
{
bInQ=!bInQ;
m_cur->m_objVal+=m_str[i];
}
else if(CHECKBLANK(m_str[i]))
{
i++;
continue;
}
else if(!bInQ && (m_str[i]==',' || m_str[i]==']' ||m_str[i]=='}'))
{
i--;
break;
}
else
{
m_cur->m_objVal+=m_str[i];
}
i++;
}
if(m_cur->m_objVal=="true" || m_cur->m_objVal=="false")
{
m_cur->type=BOOL;
}
else
{
m_cur->type=NAMEDOBG;
}
}
}
}
i++;
}
return true;
}
string CJson::GetJsonString()
{
m_strOutput="";
output(m_root);
m_strOutput="{\n"+m_strOutput+"\n}";
}
void CJson::output(NODE *n)
{
static int nTab=1;
if(n)
{
if(n->m_parent)
{
if(n!=n->m_parent->m_child)
{
m_strOutput+=",\n";
}
}
else
{
if(n!=m_root)
{
m_strOutput+=",\n";
}
}
if(n->type==ARRAY)
{
m_strOutput=m_strOutput+GetTab(nTab)+"\""+n->m_key+"\":";
m_strOutput+="\n"+GetTab(nTab)+"[\n";
nTab++;
output(n->m_child);
nTab--;
m_strOutput+="\n"+GetTab(nTab)+"]";
}
else if(n->type==OBJECT)
{
m_strOutput=m_strOutput+GetTab(nTab)+"\""+n->m_key+"\":";
m_strOutput+="\n"+GetTab(nTab)+"{\n";
nTab++;
output(n->m_child);
nTab--;
m_strOutput+="\n"+GetTab(nTab)+"}";
}
else if(n->type==OBJECTA)
{
m_strOutput+=GetTab(nTab)+"{\n";
nTab++;
output(n->m_child);
nTab--;
m_strOutput+="\n"+GetTab(nTab)+"}";
}
else if(n->type==ARRAYA)
{
m_strOutput+=GetTab(nTab)+"[\n";
nTab++;
output(n->m_child);
nTab--;
m_strOutput+="\n"+GetTab(nTab)+"]";
}
else i