我有下面的JsonArray,想通过它的“ID”搜索一个值。这里是存储在QJsonArray中的JSON:
{
"datasources":[
{"id":1, "name":"tps-pos", "display-name":"TPS Position"},
{"id":2, "name":"tps-timer", "display-name":"TPS Timer"},
{"id":3, "name":"laterial-g", "display-name":"Lateral G"},
{"id":4, "name":"longitudal-g", "display-name":"Longitudal G"},
{"id":5, "name":"Z", "display-name":"Z"},
{"id":6, "name":"afr", "display-name":"AFR"},
{"id":135, "name":"IAT", "display-name":"Intake Air temperature"},
{"id":179, "name":"RPM", "display-name":"RPM"}
]}
我尝试了std::find
,其中m_list
包含应该在JSON中找到的id。
auto result = std::find(m_DataSourceArray.begin(),m_DataSourceArray.end(), m_list[0]);
在调试时,我看到“result”总是与m_DataSourceArray
+字段迭代器相同:(调试器视图:)
result @0x7ed9e0 QJsonArray::iterator
a <8 Elemente> QJsonArray
[0] <3 Elemente> QJsonValue (Object)
[1] <3 Elemente> QJsonValue (Object)
[2] <3 Elemente> QJsonValue (Object)
[3] <3 Elemente> QJsonValue (Object)
[4] <3 Elemente> QJsonValue (Object)
[5] <3 Elemente> QJsonValue (Object)
[6] <3 Elemente> QJsonValue (Object)
[7] <3 Elemente> QJsonValue (Object)
i 8 int
1条答案
按热度按时间blpfk2vs1#
我会创建一个新的搜索函数,比如:
现在我可以按id搜索值。
输出:
当然,如果您不需要在其他地方进行搜索,就不需要创建新函数来进行搜索。
如果你需要通过name或display-name来查找一个值,你可以创建第二个函数,注意val参数现在是QString类型而不是int。
现在,我可以通过值的id或名称来搜索值:
输出: