如何访问 jsoncpp 值的键
How to access the key of a jsoncpp Value
我问这个问题有点傻,但一直没能找到获取 JSON 值的键的方法。如果我有对象的迭代器,我知道如何检索密钥。我也知道 operator[]
。
在我的例子中,密钥不是已知值,因此不能使用 get(const char *key)
或 operator[]
。也找不到 getKey()
方法。
我的 JSON 看起来像这样:
{Obj_Array: [{"122":{"Member_Array":["241", "642"]}}]}
对于要解析的代码 {"122":{"Member_Array":["241", "642"]}}
我想使用类似于 get_key()
的函数来检索 "122"
但似乎我必须使用对我来说似乎的迭代器太过分了。
我可能根本不了解 jsoncpp
如何表示 JSON 文件。
首先,您拥有的内容不会在 JsonCPP 中解析。键必须始终用双引号引起来:
{"Obj_Array": [{"122":{"Member_Array":["241", "642"]}}]}
假设这只是一个疏忽,如果我们添加空格并标记元素:
{
root-> "Obj_Array" : [
elem0-> {
key0-> "122":
val0-> {
key0.1-> "Member_Array" :
val0.1-> [
elem0.1.0-> "241",
elem0.1.1-> "642" ]
}
}
]
}
假设您已成功将数据读入 Json::Value
(我们称之为 root
),每个标记值都可以像这样访问:
elem0 = root[0];
val0 = elem0["122"]
val0_1 = val0["Member_Array"];
elem0_1_0 = val0_1[0];
elem0_1_1 = val0_1[1];
您注意到这只检索值;密钥是已知的 先验 。这并不罕见;键定义数据的模式;您必须了解它们才能直接访问这些值。
在您的问题中,您声明这不是一个选项,因为密钥是未知的。将语义应用于未知键可能具有挑战性,但您已经找到了答案。如果要获取键值,则必须遍历封闭 Json::Value.
的元素
因此,要达到 key0
,您需要这样的东西(未经测试):
elem0_members = elem0.getMemberNames();
key0 = elem0_members[0];
无论如何,这不是制作质量,但我希望它指向正确的方向。
我问这个问题有点傻,但一直没能找到获取 JSON 值的键的方法。如果我有对象的迭代器,我知道如何检索密钥。我也知道 operator[]
。
在我的例子中,密钥不是已知值,因此不能使用 get(const char *key)
或 operator[]
。也找不到 getKey()
方法。
我的 JSON 看起来像这样:
{Obj_Array: [{"122":{"Member_Array":["241", "642"]}}]}
对于要解析的代码 {"122":{"Member_Array":["241", "642"]}}
我想使用类似于 get_key()
的函数来检索 "122"
但似乎我必须使用对我来说似乎的迭代器太过分了。
我可能根本不了解 jsoncpp
如何表示 JSON 文件。
首先,您拥有的内容不会在 JsonCPP 中解析。键必须始终用双引号引起来:
{"Obj_Array": [{"122":{"Member_Array":["241", "642"]}}]}
假设这只是一个疏忽,如果我们添加空格并标记元素:
{
root-> "Obj_Array" : [
elem0-> {
key0-> "122":
val0-> {
key0.1-> "Member_Array" :
val0.1-> [
elem0.1.0-> "241",
elem0.1.1-> "642" ]
}
}
]
}
假设您已成功将数据读入 Json::Value
(我们称之为 root
),每个标记值都可以像这样访问:
elem0 = root[0];
val0 = elem0["122"]
val0_1 = val0["Member_Array"];
elem0_1_0 = val0_1[0];
elem0_1_1 = val0_1[1];
您注意到这只检索值;密钥是已知的 先验 。这并不罕见;键定义数据的模式;您必须了解它们才能直接访问这些值。
在您的问题中,您声明这不是一个选项,因为密钥是未知的。将语义应用于未知键可能具有挑战性,但您已经找到了答案。如果要获取键值,则必须遍历封闭 Json::Value.
的元素因此,要达到 key0
,您需要这样的东西(未经测试):
elem0_members = elem0.getMemberNames();
key0 = elem0_members[0];
无论如何,这不是制作质量,但我希望它指向正确的方向。