aboutsummaryrefslogtreecommitdiffstats
path: root/src/json_helper.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/json_helper.cpp')
-rw-r--r--src/json_helper.cpp61
1 files changed, 57 insertions, 4 deletions
diff --git a/src/json_helper.cpp b/src/json_helper.cpp
index ac3d2b0..f9b916e 100644
--- a/src/json_helper.cpp
+++ b/src/json_helper.cpp
@@ -123,13 +123,13 @@ const char* getStringFromJson(json_object* obj, const char* key) {
int getIntFromJson(json_object* obj, const char* key) {
if ((nullptr == obj) || (nullptr == key)) {
- HMI_ERROR("wm", "Argument is nullptr!!!");
+ HMI_ERROR("wm:jh", "Argument is nullptr!!!");
return 0;
}
json_object* tmp;
if (!json_object_object_get_ex(obj, key, &tmp)) {
- HMI_DEBUG("wm", "Not found key \"%s\"", key);
+ HMI_DEBUG("wm:jh", "Not found key \"%s\"", key);
return 0;
}
@@ -138,17 +138,70 @@ int getIntFromJson(json_object* obj, const char* key) {
json_bool getBoolFromJson(json_object* obj, const char* key) {
if ((nullptr == obj) || (nullptr == key)) {
- HMI_ERROR("wm", "Argument is nullptr!!!");
+ HMI_ERROR("wm:jh", "Argument is nullptr!!!");
return 0;
}
json_object* tmp;
if (!json_object_object_get_ex(obj, key, &tmp)) {
- HMI_DEBUG("wm", "Not found key \"%s\"", key);
+ HMI_DEBUG("wm:jh", "Not found key \"%s\"", key);
return 0;
}
return json_object_get_boolean(tmp);
}
+int inputJsonFilie(const char* file, json_object** obj) {
+ const int input_size = 128;
+ int ret = -1;
+
+ if ((nullptr == file) || (nullptr == obj)) {
+ HMI_ERROR("wm:jh", "Argument is nullptr!!!");
+ return ret;
+ }
+
+ HMI_DEBUG("wm:jh", "Input file: %s", file);
+
+ // Open json file
+ FILE *fp = fopen(file, "rb");
+ if (nullptr == fp) {
+ HMI_ERROR("wm:jh", "Could not open file");
+ return ret;
+ }
+
+ // Parse file data
+ struct json_tokener *tokener = json_tokener_new();
+ enum json_tokener_error json_error;
+ char buffer[input_size];
+ int block_cnt = 1;
+ while (1) {
+ size_t len = fread(buffer, sizeof(char), input_size, fp);
+ *obj = json_tokener_parse_ex(tokener, buffer, len);
+ if (nullptr != *obj) {
+ HMI_DEBUG("wm:jh", "File input is success");
+ ret = 0;
+ break;
+ }
+
+ json_error = json_tokener_get_error(tokener);
+ if ((json_tokener_continue != json_error)
+ || (input_size > len)) {
+ HMI_ERROR("wm:jh", "Failed to parse file (byte:%d err:%s)",
+ (input_size * block_cnt), json_tokener_error_desc(json_error));
+ HMI_ERROR("wm:jh", "\n%s", buffer);
+ *obj = nullptr;
+ break;
+ }
+ block_cnt++;
+ }
+
+ // Close json file
+ fclose(fp);
+
+ // Free json_tokener
+ json_tokener_free(tokener);
+
+ return ret;
+}
+
} // namespace jh