如何从 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 之间变化......因为这样一个硬编码的预定数量的关键值是不准确的。
规则
- json 数据的来源可以从文件、
file.json
文件或file.txt
包含 json 格式的文本。
- 任何json库都可以使用(只要是c++友好的)
- 任何使用的 json 库,请在其 存储库或下载站点 中附带一个 link .
- 非常允许使用 for 循环。
- 用于确定要存储的键值数量的循环应该是动态的。
示例代码
#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。
以下是如何通过键访问数组元素的示例:
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 之间变化......因为这样一个硬编码的预定数量的关键值是不准确的。
规则
- json 数据的来源可以从文件、
file.json
文件或file.txt
包含 json 格式的文本。 - 任何json库都可以使用(只要是c++友好的)
- 任何使用的 json 库,请在其 存储库或下载站点 中附带一个 link .
- 非常允许使用 for 循环。
- 用于确定要存储的键值数量的循环应该是动态的。
示例代码
#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。
以下是如何通过键访问数组元素的示例: