Added a method for jsmn_estimate_tokens(const char *json);

master
del6597 12 years ago
parent 958c758f2e
commit 6f4e2f7a56

@ -1,4 +1,5 @@
#include <stdlib.h> #include <stdlib.h>
#include <string.h>
#include "jsmn.h" #include "jsmn.h"
@ -31,6 +32,27 @@ static void jsmn_fill_token(jsmntok_t *token, jsmntype_t type,
token->size = 0; token->size = 0;
} }
/**
* Estimate the number of JSON tokens in the string given.
* It should return a number greater than or equal to the actual amount of items.
* If the JSON string is malformed an incorrect number will be returned.
* Of course if the malformed string is going to be parsed, then parsing
* will fail anyway.
*/
int jsmn_count_tokens(const char *json) {
int c = 1;
int i;
for(i=0;i<strlen(json);i++) {
if(json[i] == ':' ||
json[i] == ',' ||
json[i] == '[' ||
json[i] == '{') {
c++;
}
}
return c;
}
/** /**
* Fills next available token with JSON primitive. * Fills next available token with JSON primitive.
*/ */

@ -57,6 +57,15 @@ typedef struct {
*/ */
void jsmn_init(jsmn_parser *parser); void jsmn_init(jsmn_parser *parser);
/**
* Estimate the number of JSON tokens in the string given.
* It should return a number greater than or equal to the actual amount of items.
* If the JSON string is malformed an incorrect number will be returned.
* Of course if the malformed string is going to be parsed, then parsing
* will fail anyway.
*/
int jsmn_estimate_tokens(const char *json);
/** /**
* Run JSON parser. It parses a JSON data string into and array of tokens, each describing * Run JSON parser. It parses a JSON data string into and array of tokens, each describing
* a single JSON object. * a single JSON object.

Loading…
Cancel
Save