微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何将 nlohmann json 转换为 uint8_t 数组?

如何解决如何将 nlohmann json 转换为 uint8_t 数组?

我想将我创建的 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 数组?

解决方法

潜在的 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 很长的情况下也将修复缓冲区溢出错误。

,

您可以将 std::string 的内容复制到数组中,而无需使用 std::vector 作为代理。

    uint8_t parsed_json[1000] ={0};
    auto str = j_file.dump();
    std::copy(str.begin(),str.end(),parsed_json);

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。