2016-05-23 15 views
1

データを保持する符号なしchar配列があります。これをJsonオブジェクトに格納します。どのようにそれを行うことができますか? jsoncppとC++を使用する11。 声明unsigned char *をjsonに変換する、jsonspp C++

rootL1["CurrentValue"] = userInfo->hashCred; 

は動作しません、今度はそれが代わりに符号なしデータのJSONでブール値として格納されています。

+0

これを行う方法の1つは、データをjson配列に変換することです – sach

答えて

2

あなたはjsoncpp Valueクラスのドキュメントの中に見ることができる場合(私はrootL1はこのタイプのものであり、operator[]は同じ型を返すと仮定)、あなたはあなたのuserInfo->hashCred配列を受け入れるだろう何unsigned char*変換コンストラクタが存在しないことがわかります。 const char*を受け入れるコンストラクタが1つありますが、unsigned char*からconst char*への暗黙的な変換はありません。最も近いのは、あなたのケースで選択されているboolへのポインタの暗黙的な変換です。

ソリューションは、const char*を受け入れる変換コンストラクタを使用する必要があります。最初にunsigned char*が必要な理由を考える必要があります。charの配列を使用できますか?あなたはカントなら、あなたはchar*unsigned char*をキャストしてみてください:

rootL1["CurrentValue"] = reinterpret_cast<char *>(userInfo->hashCred) 

が、これはあなたが実際にあなたの配列に格納しているし、また、このデータとボンネットの下に何jsoncppをやっていることに応じて、あらゆる種類の問題を引き起こす可能性があります。

hashCredをバイナリデータとして扱い、それをchar配列にuuencodeすることをお勧めします。それをjsoncppの値に格納します。詳細はこちらをご覧ください:Binary data JSONCPP

jsoncpp test codeには、バイナリデータを値として保存する方法の例があります。

関連する問題