Да, я верю, что ваш код будет пропускать память. Проблема в том, что вы перезаписываете указатель new_obj несколько раз. Ваш код должен выглядеть примерно так:
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);
Пожалуйста, дайте мне знать, если это работает для вас. Если вам нужна дополнительная помощь, json-c имеет режим подсчета ссылок, который может дать вам больше информации об объектах. Дайте мне знать, и я могу уточнить это подробнее.