如何从 json object/file 导出属于数组中的键的值,同时将它们存储为向量中的字符串?

From a json object/file, how can I derive the values belonging to keys within an array while storing them as a string within a vector?


Json object/file 样本:

{
  "ADMIN_LIST" :[
    {
      "name" : "Luke",
      "age" : 36,
      "id_hash" : "acbfa7acrbad90adb6578adabdff0dcbf80abad43276d79b76f687590390b3ff429"
    },
    {
      "name" : "Sasha",
      "age" : 48,
      "id_hash" : "97acbfa7acrbad90adb6578adabd0dcbf80abad43276d79b76f687590390b3ff429"
    },
    {
      "name" : "Henry",
      "age" : 42,
      "id_hash" : "2acbfa7acrbad90adb6578adabd0dcbf80abad493276d79b76f687590390b3ff429"
    },
    {
      "name" : "Jake",
      "age" : 31,
      "id_hash" : "facbfa7acrbad90adb6578adabd0dcbf80abad432b76d79b76f687590390b3ff429"
    },
    {
      "name" : "Goku",
      "age" : 22,
      "id_hash" : "0acbfa7acrbad90adb6578adabd0dcbf80abad43276d79b76f687e590390b3ff429"
    }
  ]
}

在名为 ADMIN_LIST 的数组中有名为 id_hash 的键,我想获得值id_hash 的每个实例并将其存储到字符串向量 std::vector<std::string> Id_Vector = {}; 中。就这么简单。

管理员的数量在 json files/objects 之间变化......因为这样一个硬编码的预定数量的关键值是不准确的。


规则

  1. json 数据的来源可以从文件、file.json 文件或file.txt 包含 json 格式的文本。
  2. 任何json库都可以使用(只要是c++友好的
  3. 任何使用的 json 库,请在其 存储库或下载站点 中附带一个 link .
  4. 非常允许使用 for 循环
  5. 用于确定要存储的键值数量的循环应该是动态的。

示例代码

#include <iostream>
#include "SomeJSON_Library.h"
#include <string>
#include <vector>

int main()
{
   std::vector<std::string> Id_Vector = {};
   for(int g = 0; j <= Length_Of_Keys; j++) // Where Length_Of_Keys refers to the dynamic number of instances within a json file/object
   {
      Id_Vector [j] = FromJson.Array.Keys("id_hash");
   }

   return 0;
}

这样,对任何 id_hash 索引的调用将保存从 Json 文件中获得的相对值。


Json 值解析的进一步用法

#include <iostream>
#include "SomeJSON_Library.h"
#include <string>
#include <vector>

int main()
{
   std::vector<std::string> Id_Vector = {};
   std::vector<std::string> Admin_Name = {};

   for(int j = 0; j <= Length_Of_Keys; j++) // Where Length_Of_Keys refers to the dynamic number of instances within a json file/object
   {
      Id_Vector [j] = FromJson.Array.Keys("id_hash"); // Get value of key "id_hash"
      Admin_Name [j] = FromJson.Array.Keys("name"); // Get value of key "name"
   }

   // For the sake of confirming implemented code
   for(int x = 0; x <= Length_Of_Keys; x++) // Length_Of_Keys or sizeof(Id_Vector[0]) / sizeof(Id_Vector)
   {
      std::cout << "Id Hash of Admin " << Admin_Name[x] << "is " << Id_Vector[x] << "\n";
   }

   return 0;
}


输出

Id Hash of Admin Luke is acbfa7acrbad90adb6578adabdff0dcbf80abad43276d79b76f687590390b3ff429

Id Hash of Admin Sasha is 97acbfa7acrbad90adb6578adabd0dcbf80abad43276d79b76f687590390b3ff429

Id Hash of Admin Henry is 2acbfa7acrbad90adb6578adabd0dcbf80abad493276d79b76f687590390b3ff429

Id Hash of Admin Jake is facbfa7acrbad90adb6578adabd0dcbf80abad432b76d79b76f687590390b3ff429

Id Hash of Admin Goku is 0acbfa7acrbad90adb6578adabd0dcbf80abad43276d79b76f687e590390b3ff429



事实是,我确信它就像我明显设计的那样简单,但我终究无法弄清楚 Json 库或函数可以做什么这个。我知道它类似于 FromJsonObj.GetValueFromKey("id_hash"); 但我还没有找到解决方法。

我真希望我知道有一个语法调用如此直接的库,例如 FromJsonObj.GetValueFromKey();.

我只需要一个实际的 C++ 代码来实现图示的期望结果。

帮帮我,请不要标记为重复...谢谢。

我会使用著名的库,例如 https://github.com/nlohmann/json

以下是如何通过键访问数组元素的示例: