如何将 nlohmann json 转换为 uint8_t 数组?
How to convert nlohmann json to uint8_t array?
我想将我创建的 json 对象转换为 uint8_t[1000] 的数组。我试过这样的事情:
nlohmann::json j_file;
j_file["number"] = 2;
j_file["example"] = "dog";
uint8_t parsed_json[1000] ={0};
auto str = j_file.dump();
std::vector<std::uint8_t> v (str.begin(), str.end());
std::copy(v.begin(), v.end(), parsed_json);
但是有没有更简单的方法将 json 转换为 uint8_t 数组?
您可以将 std::string
的内容复制到数组,而无需使用 std::vector
作为代理。
uint8_t parsed_json[1000] ={0};
auto str = j_file.dump();
std::copy(str.begin(), str.end(), parsed_json);
潜在的 XY 问题:也许您根本不需要转换为数组。您可以在不复制任何内容的情况下重新解释指向字符串的指针:
static_assert(std::is_same_v<unsigned char, std::uint8_t>);
std::uint8_t* parsed_json = reinterpret_cast<std::uint8_t*>(str.data());
避免复制不仅效率更高,而且还能修复 JSON 较长时缓冲区溢出的错误。
我想将我创建的 json 对象转换为 uint8_t[1000] 的数组。我试过这样的事情:
nlohmann::json j_file;
j_file["number"] = 2;
j_file["example"] = "dog";
uint8_t parsed_json[1000] ={0};
auto str = j_file.dump();
std::vector<std::uint8_t> v (str.begin(), str.end());
std::copy(v.begin(), v.end(), parsed_json);
但是有没有更简单的方法将 json 转换为 uint8_t 数组?
您可以将 std::string
的内容复制到数组,而无需使用 std::vector
作为代理。
uint8_t parsed_json[1000] ={0};
auto str = j_file.dump();
std::copy(str.begin(), str.end(), parsed_json);
潜在的 XY 问题:也许您根本不需要转换为数组。您可以在不复制任何内容的情况下重新解释指向字符串的指针:
static_assert(std::is_same_v<unsigned char, std::uint8_t>);
std::uint8_t* parsed_json = reinterpret_cast<std::uint8_t*>(str.data());
避免复制不仅效率更高,而且还能修复 JSON 较长时缓冲区溢出的错误。