c++ 如何修复nlohmann类型错误时,试图解析json到Map?

t3irkdon  于 2023-10-20  发布在  其他
关注(0)|答案(1)|浏览(188)

我一直想用c++处理json文件,我偶然发现了nlohmann的json解析器。我试图将JSON解析为char和string vector的Map,但我一直得到相同的[type_error.302]类型必须是数组,但却是对象

#include <iostream>
#include <string>
#include <vector>
#include <unordered_map>
#include <fstream>
#include <nlohmann/json.hpp>

using json = nlohmann::json;

int main() {
    std::unordered_map<char, std::vector<std::string>> wordList;
    std::ifstream file("wordlist.json");
    if (!file.is_open()) {
        throw std::runtime_error("Failed to open wordlist.json");
    }

    json data;
    file >> data;
    wordList = data.get<decltype(wordList)>();
}

这是我使用的JSON示例

{
    "a": ["apple", "apricot"],
    "b": ["banana", "blueberry"],
    "c": ["cherry", "cranberry"]
}

有谁能帮我弄清楚这段代码有什么问题吗

yc0p9oo0

yc0p9oo01#

虽然wordlist.json中的键只有一个字符,但它们仍然是字符串。因此,解决方案是将这一行改为:

std::unordered_map<char, std::vector<std::string>> wordList;

收件人:

std::unordered_map<std::string, std::vector<std::string>> wordList;

相关问题