Key name string vs. value string
I don't know if this is solvable in the existing solution somehow, but when you transverse a token array, how do you distinct between a key name and a value string?
It's fairly important when searching for a given key, that you don't mistake a "value" for a key name.
I propose that the JSMN_STRING be divided into a JSMN_KEY and a JSMN_STRING_PRIMITIVE. (Or something like that.)