我正在读取和解析一个 json 文件;如果文件中没有新行,则一切正常;这是代码:
#include <json-c/json.h>
#include <stdio.h>
#include <string.h>
void parse_json(json_object * jobj);
int main(int argc, char* argv[]) {
FILE *fp = fopen(argv[1], "r");
char tmp[65000] = { 0x0 };
if (fp == NULL) {
perror("Error opening file");
return (-1);
} else {
while (fp && fgets(tmp, sizeof(tmp), fp)) {
}
}
fclose(fp);
json_object * jobj = json_tokener_parse(tmp);
parse_json(jobj);
}
void parse_json(json_object * jobj) {
printf("\n");
enum json_type type;
json_object_object_foreach(jobj, key, val)
{
type = json_object_get_type(val);
switch (type) {
case json_type_string:
if (strcmp(key, "product") == 0) {
printf("***** key found! ***** \n");
printf("key: %s, value: %s \n", key,
json_object_get_string(val));
printf("***** End keys ***** \n");
} else {
printf("key: %s, value: %s \n", key,
json_object_get_string(val));
}
break;
}
}
}
这是工作的json:
{"product": "Live JSON generator"}
这是崩溃的json。
{
"colors" :"blue"
}
所以我认为我的错误是在阅读文件部分。我做错了什么?