当前位置: 首页 > 知识库问答 >
问题:

从JSON文件中读取字符串值的向量,在C中使用Boost

李昊苍
2023-03-14

我是Boost和Json新手。应该很简单,但是我找不到答案。

如何使用Boost读取C中字符串向量的值。

Json文件的内容例如:

{  
"keyword1": ["string1", "string2"],  
"keyword2": ["string3", "string4"] 
}

最后,我想为每个关键字向量:

vector<string> keyword1;
vector<string> keyword2;

共有2个答案

方和宜
2023-03-14

谢谢你的帮助。

这个代码对我有用:

boost::property_tree::ptree pt;
boost::property_tree::read_json("test.json", pt);
BOOST_FOREACH(boost::property_tree::ptree::value_type &v, pt.get_child("entry_name"))
{
     std::cout << v.second.data() << std::endl;
}

“测试”的内容。json'文件:

{
    "entry_name": ["string1", "string2", "string3"]
}

代码输出:

string1
string2
string3

我只想补充一点,我尝试了对多个字符串值进行不同的解析,包括:

std::vector<std::string> vec = pt.get<std::vector<std::string>> ("entry_name");

那是错误的。

我不想添加新的类/库,如“rapidJson”或“nlohmann”,只增加库。

皇甫礼骞
2023-03-14

您在boost中的最佳选择是使用问题中的方法:使用boost property_tree读取JSON

如果您需要简化,我强烈建议您使用https://github.com/nlohmann/json,并使用< code>json::parse API。

 类似资料:
  • 《 cin.getline()》一节中,详细介绍了如何使用 getline() 方法从 cin 输入流缓冲区中读取一行字符串。在此基础上,getline() 方法还适用于读取指定文件中的一行数据,本节就给大家做详细的讲解。 我们知道,getline() 方法定义在 istream 类中,而 fstream 和 ifstream 类继承自 istream 类,因此 fstream 和 ifstrea

  • 我需要将对象保存在一个文件中。我使用GSON库。写入文件很容易,但是读取很复杂。我一个接一个地读取整个文件,但是这个解决方案效率很低。如何只读取一个JSON字符串?我不知道如何做得更好。请帮帮我。谢谢你

  • 问题内容: 我想读Python中的大文件时,了解在这个方法内存使用率的差异。 第1版,发现这里的计算器: 版本2,我用在此之前,我发现上面的代码: 该文件在两个版本部分阅读。而目前的一块可以被处理。在第二个例子,是在每个周期中获得新的内容,所以我认为这将做的工作,以 不 完整的文件加载到内存..? 但我真的不明白是什么呢,我敢肯定我得到的东西错在这里。任何人都可以解释给我吗? 还有别的,我感到困惑

  • 我希望你帮助我理解我应该如何做以下事情: 我有一个包含由空格“”分隔的整数的文件。我需要读取所有整数,对它们进行排序,并将它们作为字符串写入另一个文件。我写了一个代码,但是我一个字符一个字符地读,把这个单词放在一个字符子数组[Max_Int]中,当我遇到“”时,我把这些字符,现在是一个字符串,在原子化后放到另一个主Int数组中,直到到达文件的末尾,一个字符串接一个字符串,然后我对它们进行排序并将它

  • 问题内容: 我有一个字符串,我想从中获取一些值。 我的字符串看起来像: 字符串1: 字串2: 不幸的是,存在这样一种情况,字符串将具有相同的概念,但是没有一些参数: 字串3: 我怎样才能得到的值:,,,,? 任何帮助表示赞赏! 问题答案: 您的字符串是JSON格式的,因此您需要将其 解析 为一个对象。为此,您可以使用JSON.NET。 这是有关如何将JSON字符串解析为动态对象的示例: 编码愉快!

  • 问题内容: 我正在将jQuery AJAX POST发布到Servlet,并且数据采用JSON字符串的形式。它已成功发布,但在Servlet端,我需要将这些键- 值对读入Session Object并将其存储。我尝试使用JSONObject类,但无法获取它。 这是代码段 在Servlet方面 问题答案: 您实际上并没有解析json。