C++ 将无符号字符*转换为json,jsonspp C++;
我有一个未签名的字符数组保存数据,我想把它存储到一个Json对象中。怎样才能做到呢?使用jsoncpp和C++11。 声明C++ 将无符号字符*转换为json,jsonspp C++;,c++,json,c++11,jsoncpp,C++,Json,C++11,Jsoncpp,我有一个未签名的字符数组保存数据,我想把它存储到一个Json对象中。怎样才能做到呢?使用jsoncpp和C++11。 声明 rootL1["CurrentValue"] = userInfo->hashCred; 不起作用,反过来它在json中存储为bool,而不是未签名的数据。如果您可以查看jsoncpp类的文档(我假设rootL1属于这种类型,而operator[]返回相同的类型),您将看到没有接受您的userInfo->hashCred数组的unsigned char*转换构造函数
rootL1["CurrentValue"] = userInfo->hashCred;
不起作用,反过来它在json中存储为bool,而不是未签名的数据。如果您可以查看jsoncpp类的文档(我假设
rootL1
属于这种类型,而operator[]
返回相同的类型),您将看到没有接受您的userInfo->hashCred
数组的unsigned char*
转换构造函数。有一个构造函数接受const char*
,但没有从unsigned char*
到const char*
的隐式转换,最接近的一个是指向布尔的指针的隐式转换,这是在您的案例中选择的
解决方案应该是使用接受const char*
的转换构造函数。首先,您应该想想为什么需要无符号字符*
,也许您可以使用字符类型的数组?如果不能,则可以尝试将无符号字符*
转换为字符*
:
rootL1["CurrentValue"] = reinterpret_cast<char *>(userInfo->hashCred)
rootL1[“CurrentValue”]=reinterpret\u cast(userInfo->hashCred)
但是,这可能会导致各种各样的问题,这取决于您在阵列中实际存储的内容,以及jsoncpp在使用这些数据的情况下所做的工作
我建议您将hashCred视为二进制数据,并将其编码为char
array。然后将其存储在jsoncpp值中。有关详细信息,请参阅此处:
在中,您还可以找到一些如何将二进制数据存储为值的示例。一种方法是将数据转换为json数组,反之亦然