2016-06-27 46 views
0

我正在使用json解析器Json for Modern C++(https://github.com/nlohmann/json)。我知道,我可以用JSON_Pointer得到一個JSON值的值:C++ nlohmann/json如何使用運行時提供的json_pointers讀取json值

auto v1 = j["https://stackoverflow.com/a/b/c"_json_pointer];

但我將如何去獲得,如果JSON指針在運行時定義的值(傳遞給我的功能)?

std:string s1 = "https://stackoverflow.com/a/b/c"; 
auto v1 = j[s1]; // doesn't work 

您不能將「json_pointer」追加到std :: string賦值或s1變量。有沒有將std :: string轉換爲json_pointer的函數?調用者對json一無所知,無法訪問「json.hpp」頭。我也試過

std::string s1 = "https://stackoverflow.com/a/b/c"; 
json_pointer p1(s1); 

但是「json_pointer」類是未定義的。除了這個問題,這是一個偉大的庫,可以完成我需要的一切。 TIA。

回答

2

看看源代碼:

inline nlohmann::json::json_pointer operator "" _json_pointer(const char* s, std::size_t) 
{ 
    return nlohmann::json::json_pointer(s); 
} 

如果json_pointer是不確定的,那麼你沒有使用正確的命名空間。嘗試

using nlohmann::json::json_pointer; 
std::string s1 = "https://stackoverflow.com/a/b/c"; 
json_pointer p1(s1); 
+0

我發誓,這是我嘗試的第一件事,不會編譯。只是再次嘗試,它像一個魅力。感謝您的快速和非判斷性迴應。 –

+0

沒問題。下次嘗試構建[MCVE](https://stackoverflow.com/help/mcve)。當我遇到問題的一半時,我只是通過建立一個問題來解決問題。 – Taywee

相關問題