jsmn
jsmn copied to clipboard
Problems parsing number with JSMN_STRICT is defined
If you define JSMN_STRICT
, then parsing a simple number doesn't work anymore (it does if you undefine JSMN_STRICT
):
#define JSMN_STRICT
#include "jsmn.h"
#include <stdio.h>
#include <string.h>
static char *json = "1";
int main( void)
{
jsmn_parser p;
jsmntok_t t[128];
int r;
jsmn_init( &p);
r = jsmn_parse(&p, json, strlen( json), t, 128);
if( r < 0)
{
printf("Failed to parse JSON: %d\n", r);
return 1;
}
return( 0);
}
This will bail with error 2.
Currently JSMN does not allow anything else than object or array as the root value. This is going to be fixed in the future.
Well it does work, if you don't define JSMN_STRICT
though. So your comment isn't entirely correct.
Well, yeah. The non strict mode is.... special. I'd advice against using it personally. In future version it will be either gone or replaced by mode that implements proper standards.
Actually I kinda like the non-strict mode, as I am using jsmn more as a tokenizer and do the verification f.e. of floating point numbers or "true" vs. "thanks" at a later stage.