我需要像这样读取 json 文件中包含的信息:
{"first":10, "second":"0", "P1":"1.e-20","P2":"1000","P3":"1000","P4":"1000","P5":"1"}
由于我没有这个问题的经验,所以我首先使用您可以在这些行下面看到的短代码。它确实编译没有问题,但它在执行时会给出分段错误。文件 general.json 位于同一文件夹中。如果我评论最后一行,json 文件中包含的信息将正确打印在屏幕中。谁能告诉我我做错了什么?
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <fstream> // fstream.h in old versions of g++
#include <iostream> //para cout
#include <sstream>
#include <json/json.h>
using namespace std;
int main() {
struct json_object *new_json, *json_arr, *json_reg, *json_field;
string line;
stringstream jsonfile;
ifstream json("file.json", ios::in);
{getline(json, line); do {jsonfile << line;} while (getline(json, line));}
json.close();
cout << jsonfile.str().c_str();
new_json=json_tokener_parse(jsonfile.str().c_str());
json_field=json_object_object_get(json_reg, "first");
}
您在使用json_reg
指针时没有对其进行初始化,并且函数取消引用它。您(很可能)在以下情况下使用 json-c:
-
json_object_object_get
对对象的json_object_object_get_ex
调用 -
json_object_object_get_ex
switch(jso->o_type)
取消引用无效指针