json lib

Dependents:   grove_stream_jpa_sd2 grove_stream_jpa_sd2 grove_stream_jpa_sd2-2 grove_stream_jpa_sd2-3 ... more

Revision:
3:fab591fca1e7
Child:
5:dd98cf00ed9b
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jsmn.h	Thu Jun 02 06:08:24 2016 +0000
@@ -0,0 +1,83 @@
+#ifndef __JSMN_H_
+#define __JSMN_H_
+
+#include <stddef.h>
+
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+    /*
+     Modified version of standard jsmn lib ... added a type "JSMN_KEY" and enabled
+     parent-pointers and strict JSON check.
+     */
+    /**
+     * JSON type identifier. Basic types are:
+     *  o Object
+     *  o Array
+     *  o String
+     *  o Other primitive: number, boolean (true/false) or null
+     */
+    typedef enum
+    {
+        JSMN_UNDEFINED = 0,
+        JSMN_OBJECT = 1,
+        JSMN_ARRAY = 2,
+        JSMN_STRING = 3,
+        JSMN_PRIMITIVE = 4,
+        JSMN_KEY = 5
+    } jsmntype_t;
+
+    enum jsmnerr
+    {
+        /* Not enough tokens were provided */
+        JSMN_ERROR_NOMEM = -1,
+        /* Invalid character inside JSON string */
+        JSMN_ERROR_INVAL = -2,
+        /* The string is not a full JSON packet, more bytes expected */
+        JSMN_ERROR_PART = -3
+    };
+
+    /**
+     * JSON token description.
+     * @param       type    type (object, array, string etc.)
+     * @param       start   start position in JSON data string
+     * @param       end     end position in JSON data string
+     */
+    typedef struct
+    {
+            jsmntype_t type;
+            int start;
+            int end;
+            int parent;
+            int childCount;
+    } jsmntok_t;
+
+    /**
+     * JSON parser. Contains an array of token blocks available. Also stores
+     * the string being parsed now and current position in that string
+     */
+    typedef struct
+    {
+            unsigned int pos; /* offset in the JSON string */
+            unsigned int toknext; /* next token to allocate */
+            int toksuper; /* superior token node, e.g parent object or array */
+    } jsmn_parser;
+
+    /**
+     * Create JSON parser over an array of tokens
+     */
+    void jsmn_init ( jsmn_parser *parser );
+
+    /**
+     * Run JSON parser. It parses a JSON data string into and array of tokens, each describing
+     * a single JSON object.
+     */
+    int jsmn_parse ( jsmn_parser *parser, const char *js, size_t len, jsmntok_t *tokens, unsigned int num_tokens );
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __JSMN_H_ */
+