2016-06-27 7 views
0

jsonパーサJsonをModern C++(https://github.com/nlohmann/json)に使用しています。 (私の関数に渡された)C++ nlohmann/jsonランタイムを使用してjson値を読み取るためにjson_pointersを提供する方法

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

しかし、どのように私は、JSONのポインタが実行時に定義されている場合、値を得ることについて行くだろう:私は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)をビルドしてみてください。私が問題にぶつかっている時間の半分、最初に1つを構築するだけで解決します。 – Taywee

関連する問題