簡體   English   中英

使用 jsoncpp 讀取 JSON 文件

[英]Reading a JSON file with jsoncpp

我正在嘗試使用 JSON 文件中的列表中的 integer 值,但我似乎無法解析文件。

我嘗試更改“Reader reader;”行到“CharReader reader;”,但這不適用於解析 function。

#include <fstream>
#include "json\json.h"
using namespace std;
using namespace Json;

int main()
{
    ifstream f("settings.json");
    Reader reader; // line 11
    Value settings;
    f >> settings;
    reader.parse(f, settings); // line 14
    Value rxv = settings["res"][0u];
    Value ryv = settings["res"][1u];
    int screenres_x = rxv.asInt();
    int screenres_y = ryv.asInt();

JSON的內容:

{
    "res": [1024, 768],
    "windowed": true,
    "fpscap": true
}

我希望設置值包含 JSON 文件的內容,但我收到以下錯誤:

"'Json::Reader': Use CharReader and CharReaderBuilder instead." on line 11

"'Json::Reader::__autoclassinit2': Use CharReader and CharReaderBuilder instead." on line 11

"'Json::Reader::Reader': Use CharReader and CharReaderBuilder instead." on line 11

"'Json::Reader::parse': Use CharReader and CharReaderBuilder instead." on line 14

Visual Studio 拋出錯誤C4996 ,這意味着顯然不推薦使用Json::Reader

不過,您可以只使用重載的>>運算符:

#include <fstream>
#include "json\json.h"
using namespace std;
using namespace Json;

int main()
{
    ifstream f("settings.json");
    Value settings;
    f >> settings;
    // Do something with settings
}

f >> settings應該完成的行是什么?

我認為你應該簡單地刪除它。 並檢查parse函數的返回值。

所以試試:

#include <fstream>
#include "json\json.h"
using namespace std;
using namespace Json;

int main()
{
    ifstream f("settings.json");
    Reader reader;
    Value settings;
    if(reader.parse(f, settings))
    {
      // Do stuff
    }
    else
    {
        cout << "Parsing failed!\n";
    }

}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM