簡體   English   中英

如何使用 nlohmann json 從字符串中獲取值類型?

[英]How to get value type from string using nlohmann json?

我得到的字符串

{
    "players": [
        {
            "SteamId": "765611974898245625",
            "CommunityBanned": false,
            "VACBanned": true,
            "NumberOfVACBans": 1,
            "DaysSinceLastBan": 1011,
            "NumberOfGameBans": 1,
            "EconomyBan": "none"
        }
    ]
}

我需要從中得到

bool VACBanned = true;
int NumberOfVACBans = 1;

等等

我使用 nlohmann json

using json = nlohmann::json;
auto j3 = json::parse(respone.c_str());

if (j3.is_boolean()) // crashing without this check
    g_Player[index].bVACBanned = j3.at("VACBanned").get<bool>();

由於某種原因它不起作用

我以前沒有使用過那個解析器,只需閱讀它的readme.md 這兩種方法似乎都有效:

bool b1 = j3.at("players")[0].at("VACBanned");
bool b2 = j3["players"][0]["CommunityBanned"];

您的 JSON 有一個根節點players ,它是一個數組; 它的第一個元素可以通過[0]訪問; 從那時起,您可以訪問所有已解析的元素。

根據您的容忍度添加錯誤檢查:)

PS 這只是一個語法演示; 我假設 OP 可以獲取解析數組的大小並遍歷它以獲取每個玩家的詳細信息。

另外,要回答您的“由於某種原因它不起作用”:

g_Player[index].bVACBanned = j3.at("VACBanned").get<bool>();

j3沒有元素"VACBanned" ,因此at("VACBanned")可能會返回您取消引用的nullptr

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM