Yes, I believe your code will be a memory leak. The problem is that you rewrite your new_obj pointer several times. Your code should look something like this:
struct json_object *new_obj, *fuu_obj, *foo_obj; new_obj = json_tokener_parse(strRawJSON); fuu_obj = json_object_object_get(new_obj, "FUU"); if(NULL == new_obj){ SYS_OUT("\nFUU not found in JSON"); return NO; } foo_obj = json_object_object_get(new_obj, "FOO"); if(NULL == new_obj){ SYS_OUT("\nFOO not found in JSON"); return NO; } json_object_put(foo_obj); json_object_put(fuu_obj); json_object_put(new_obj);
Please let me know if this works for you. If you need more help, json-c has a link counting mode that can provide you with more information about objects. Let me know, and I can elaborate on this.
source share