【问题标题】:Reading a JSON file with jsoncpp使用 jsoncpp 读取 JSON 文件
【发布时间】:2019-10-15 19:38:38
【问题描述】:

我正在尝试使用 JSON 文件中列表中的整数值,但我似乎无法解析文件。

我尝试更改“Reader reader;”行到“CharReader reader;”,但这不适用于解析函数。

#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

【问题讨论】:

  • 你不能只是交换类型名称然后在它不起作用时放弃。您必须在文档中实际查找建议的替换功能并阅读有关如何使用它的信息...

标签: c++ json std jsoncpp


【解决方案1】:

Visual Studio 抛出错误C4996,这意味着Json::Reader 的使用显然已被弃用。

不过,您可以只使用重载的 &gt;&gt; 运算符:

#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
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-13
    • 1970-01-01
    • 2015-01-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多