json: improve parsing and serializing of integers
Add support for parsing and serializing of following integer types:
'int8_t', 'uint8_t', 'int16_t', 'uint16_t' and 'uint32_t'.
The generic integer token JSON_TOK_INT and JSON_TOK_UINT, in combination
with the field size (set by JSON_OBJ_DESCR_PRIM) allows to parse different
integer types, for example:
struct foo {
int64_t i64;
uint32_t u32;
int16_t i16;
uint8_t u8;
};
struct json_obj_descr foo_descr[] = {
JSON_OBJ_DESCR_PRIM(struct foo, i64, JSON_TOK_INT),
JSON_OBJ_DESCR_PRIM(struct foo, u32, JSON_TOK_UINT),
JSON_OBJ_DESCR_PRIM(struct foo, i16, JSON_TOK_INT),
JSON_OBJ_DESCR_PRIM(struct foo, u8, JSON_TOK_UINT),
};
These tokens also support parsing and serializing enums:
enum unsigned_enum { UA=0, UB=1, UC=2 };
enum signed_enum { SA=-1, SB=0, SC=1 };
struct foo {
enum unsigned_enum u;
enum signed_enum s;
};
struct json_obj_descr foo_descr[] = {
JSON_OBJ_DESCR_PRIM(struct foo, u, JSON_TOK_UINT),
JSON_OBJ_DESCR_PRIM(struct foo, s, JSON_TOK_INT),
};
Signed-off-by: Christoph Winklhofer <cj.winklhofer@gmail.com>