使用 jsonCpp 库从 C++ 中的文件解析 json 时出错
Error While Parsing json from a file in C++ using jsonCpp Library
我有一个 JSON 文件之类的东西
[{
"movie_id": 1,
"rating": "9.3",
"votes": "1,318,626",
"description": "Two imprisoned men bond over a number ....",
"title": "The Shawshank Redemption",
"poster": "",
"release_date": "14 October 1994",
"metascore": "80",
"director": "Frank Darabont",
"storyline": "Andy Dufresne is a young and successful ...",
"stars": [ "Tim Robbins", "Morgan Freeman", "Bob Gunton" ],
"year": "1994",
"genre": [ "Crime", "Drama" ],
"gallery": [ "unknown1394846836._CB379391227_.png", ],
"running_time": "142min"
},
{...},
{...},...]
我想使用 jsonCpp 库解析上述文件 input.json
中的数据,这是我的代码
#include <bits/stdc++.h>
#include "json/json.h"
using namespace std;
int main(){
Json::Value root;
Json::Reader reader;
ifstream file("input.json");
file >> root;
string title = root[0]["title"].asString();
cout<<title;
return 0;
}
我使用 amalgamate.py
生成 jsoncpp.cpp 和 json.h
文件,当我 运行 使用命令 jsoncpp.cpp 这段代码(jsoncpp.cpp)时 g++ jsoncpp.cpp
我收到以下错误
/tmp/ccx18K5p.o: In function `main':
jsoncpp.cpp:(.text+0x19): undefined referen to Json::Value::Value(Json::ValueType)'
jsoncpp.cpp:(.text+0x28): undefined reference to `Json::Reader::Reader()'
jsoncpp.cpp:(.text+0x57): undefined reference to `Json::operator>> (std::istream&, Json::Value&)'
jsoncpp.cpp:(.text+0x68): undefined reference to `Json::Value::operator[] (int)'
jsoncpp.cpp:(.text+0x75): undefined reference to `Json::Value::operator[](char const*)'
jsoncpp.cpp:(.text+0x8a): undefined reference to `Json::Value::asString[abi:cxx11]() const'
jsoncpp.cpp:(.text+0xdc): undefined reference to `Json::Value::~Value()'
jsoncpp.cpp:(.text+0x12b): undefined reference to `Json::Value::~Value()'
collect2: error: ld returned 1 exit status
这可能是什么问题,如何解决?
在此先感谢
终于解决了!!我正在写我的问题的答案以帮助其他人
我没有正确 linked 库所以它告诉我 error.You 可以 link 在 c++ 中以这种方式使用任何外部库。
- 我的当前目录中有两个文件
json/json.h
和 jsoncpp.cpp
- 创建一个新文件
main.cpp
并写下您使用该库的代码
- 不要编辑
jsoncpp.cpp
- 包含
json.h
文件和 jsoncpp.cpp
,如下面更新的代码所示。
然后 运行 g++ main.cpp
#include <bits/stdc++.h>
#include "json/json.h"
#include "jsoncpp.cpp"
using namespace std;
int main(){
Json::Value root;
Json::Reader reader;
ifstream file("input.json");
file >> root;
string title = root[0]["title"].asString();
cout<<title<<"\n";
return 0;
}
运行 g++ main.cpp
之后的输出:
The Shawshank Redemption
我有一个 JSON 文件之类的东西
[{
"movie_id": 1,
"rating": "9.3",
"votes": "1,318,626",
"description": "Two imprisoned men bond over a number ....",
"title": "The Shawshank Redemption",
"poster": "",
"release_date": "14 October 1994",
"metascore": "80",
"director": "Frank Darabont",
"storyline": "Andy Dufresne is a young and successful ...",
"stars": [ "Tim Robbins", "Morgan Freeman", "Bob Gunton" ],
"year": "1994",
"genre": [ "Crime", "Drama" ],
"gallery": [ "unknown1394846836._CB379391227_.png", ],
"running_time": "142min"
},
{...},
{...},...]
我想使用 jsonCpp 库解析上述文件 input.json
中的数据,这是我的代码
#include <bits/stdc++.h>
#include "json/json.h"
using namespace std;
int main(){
Json::Value root;
Json::Reader reader;
ifstream file("input.json");
file >> root;
string title = root[0]["title"].asString();
cout<<title;
return 0;
}
我使用 amalgamate.py
生成 jsoncpp.cpp 和 json.h
文件,当我 运行 使用命令 jsoncpp.cpp 这段代码(jsoncpp.cpp)时 g++ jsoncpp.cpp
我收到以下错误
/tmp/ccx18K5p.o: In function `main':
jsoncpp.cpp:(.text+0x19): undefined referen to Json::Value::Value(Json::ValueType)'
jsoncpp.cpp:(.text+0x28): undefined reference to `Json::Reader::Reader()'
jsoncpp.cpp:(.text+0x57): undefined reference to `Json::operator>> (std::istream&, Json::Value&)'
jsoncpp.cpp:(.text+0x68): undefined reference to `Json::Value::operator[] (int)'
jsoncpp.cpp:(.text+0x75): undefined reference to `Json::Value::operator[](char const*)'
jsoncpp.cpp:(.text+0x8a): undefined reference to `Json::Value::asString[abi:cxx11]() const'
jsoncpp.cpp:(.text+0xdc): undefined reference to `Json::Value::~Value()'
jsoncpp.cpp:(.text+0x12b): undefined reference to `Json::Value::~Value()'
collect2: error: ld returned 1 exit status
这可能是什么问题,如何解决?
在此先感谢
终于解决了!!我正在写我的问题的答案以帮助其他人 我没有正确 linked 库所以它告诉我 error.You 可以 link 在 c++ 中以这种方式使用任何外部库。
- 我的当前目录中有两个文件
json/json.h
和jsoncpp.cpp
- 创建一个新文件
main.cpp
并写下您使用该库的代码 - 不要编辑
jsoncpp.cpp
- 包含
json.h
文件和jsoncpp.cpp
,如下面更新的代码所示。 然后 运行
g++ main.cpp
#include <bits/stdc++.h> #include "json/json.h" #include "jsoncpp.cpp" using namespace std; int main(){ Json::Value root; Json::Reader reader; ifstream file("input.json"); file >> root; string title = root[0]["title"].asString(); cout<<title<<"\n"; return 0; }
运行
g++ main.cpp
之后的输出:The Shawshank Redemption