Răsfoiți Sursa

json: add get_object API and fix str init

Emmanuel Schmidbauer 7 ani în urmă
părinte
comite
5fe86186e2
2 a modificat fișierele cu 6 adăugiri și 5 ștergeri
  1. 3 2
      src/modules/json/api.h
  2. 3 3
      src/modules/json/json_mod.c

+ 3 - 2
src/modules/json/api.h

@@ -25,11 +25,12 @@
 #include "../../core/sr_module.h"
 #include "../../core/sr_module.h"
 
 
 typedef struct json_object *(*json_parse_f) (const char *str);
 typedef struct json_object *(*json_parse_f) (const char *str);
-typedef str (*json_extract_field_f)(
-		struct json_object *json_obj, char *json_name);
+typedef struct json_object *(*json_get_object_f) (struct json_object *json_obj, const char *str);
+typedef str (*json_extract_field_f) (struct json_object *json_obj, char *json_name);
 
 
 typedef struct json_api {
 typedef struct json_api {
 	json_parse_f json_parse;
 	json_parse_f json_parse;
+	json_get_object_f get_object;
 	json_extract_field_f extract_field;
 	json_extract_field_f extract_field;
 } json_api_t;
 } json_api_t;
 
 

+ 3 - 3
src/modules/json/json_mod.c

@@ -65,9 +65,8 @@ struct module_exports exports = {
 		0						 /* per-child init function */
 		0						 /* per-child init function */
 };
 };
 
 
-str _json_extract_field(struct json_object *json_obj, char *json_name)
-{
-	str val;
+str _json_extract_field(struct json_object *json_obj, char *json_name) {
+	str val = {0, 0};
 	json_extract_field(json_name, val);
 	json_extract_field(json_name, val);
 	return val;
 	return val;
 }
 }
@@ -81,6 +80,7 @@ int bind_json(json_api_t *api) {
 		return -1;
 		return -1;
 	}
 	}
 	api->json_parse = json_parse;
 	api->json_parse = json_parse;
+	api->get_object = json_get_object;
 	api->extract_field = _json_extract_field;
 	api->extract_field = _json_extract_field;
 	return 0;
 	return 0;
 }
 }