}
else if(m_str[i]=='}')
{
if(m_par)
{
m_par=m_par->m_parent;
}
bInKey=true;
}
else if(m_str[i]=='\"')
{
if(!bInKey)
{
i++;
m_cur->type=STRING;
while(m_str[i]!='\"' ||(m_str[i]=='\"' && m_str[i-1]=='\\'))
{
m_cur->m_strVal+=m_str[i];
i++;
}
while(m_str[i]!=','&& m_str[i]!=']' && m_str[i]!='}')
{
i++;
}
i--;
}
else
{
i++;
NODE *node=new NODE;
memset(node,0,sizeof(NODE));
while(m_str[i]!='\"' ||(m_str[i]=='\"' && m_str[i-1]=='\\'))
{
node->m_key+=m_str[i];
i++;
}
if(m_par && (m_par->type==ARRAY || m_par->type==ARRAYA))
{
node->m_strVal=node->m_key;
node->type=STRINGA;
while(m_str[i]!=',' && m_str[i]!=']')
{
i++;
}
i--;
}
else
{
{
i++;
}
i--;
}
if(m_root==0)
{
m_root=node;
m_cur=node;
}
else
{
m_cur=node;
node->m_parent=m_par;
if(m_par)
{
if(m_par->m_child==0)
{
m_par->m_child=node;
}
else
{
NODE *n=m_par->m_child;
while(n->m_next)
{
n=n->m_next;
}
n->m_next=node;
}
}
else
{
NODE *n=m_root;
while(n->m_next)
{
n=n->m_next;
}
n->m_next=node;
}
}
}
}
else if(m_str[i]>='1' && m_str[i]<='9')
{
if