Example #1
0
static Jsonnode* json_parse_endp(const char *str,const char **endp){
	Jsonnode *node;
	node=parsenumber(str,endp); if(node){SKIPSPACES(*endp); return node;}
	node=parsestring(str,endp); if(node){SKIPSPACES(*endp); return node;}
	node=parsebool  (str,endp); if(node){SKIPSPACES(*endp); return node;}
	node=parsenull  (str,endp); if(node){SKIPSPACES(*endp); return node;}
	node=parsearray (str,endp); if(node){SKIPSPACES(*endp); return node;}
	node=parseobject(str,endp); if(node){SKIPSPACES(*endp); return node;}
	return NULL;
}
Example #2
0
static int
parsevalue(Parser *p, JSON *parent, JSON **prev)
{
	switch (*p->s) {
	case '{': return parseobject(p, parent, prev);
	case '[': return parsearray(p, parent, prev);
	case '"': return parsestring(p, parent, prev);
	case 't': return parsetrue(p, parent, prev);
	case 'f': return parsefalse(p, parent, prev);
	case 'n': return parsenull(p, parent, prev);
	case '-':
	case '0': case '1': case '2': case '3': case '4':
	case '5': case '6': case '7': case '8': case '9':
		return parsenumber(p, parent, prev);
	}
	return 0;
}