31 lines
901 B
C
31 lines
901 B
C
#pragma once
|
|
|
|
typedef struct json_deserializer {
|
|
void *(*jd_create_map)(void *jd_opaque);
|
|
void *(*jd_create_list)(void *jd_opaque);
|
|
|
|
void (*jd_destroy_obj)(void *jd_opaque, void *obj);
|
|
|
|
void (*jd_add_obj)(void *jd_opaque, void *parent,
|
|
const char *name, void *child);
|
|
|
|
// str must be free'd by callee
|
|
void (*jd_add_string)(void *jd_opaque, void *parent,
|
|
const char *name, char *str);
|
|
|
|
void (*jd_add_long)(void *jd_opaque, void *parent,
|
|
const char *name, long v);
|
|
|
|
void (*jd_add_double)(void *jd_opaque, void *parent,
|
|
const char *name, double d);
|
|
|
|
void (*jd_add_bool)(void *jd_opaque, void *parent,
|
|
const char *name, int v);
|
|
|
|
void (*jd_add_null)(void *jd_opaque, void *parent,
|
|
const char *name);
|
|
|
|
} json_deserializer_t;
|
|
|
|
void *json_deserialize(const char *src, const json_deserializer_t *jd,
|
|
void *opaque, char *errbuf, size_t errlen);
|