美文网首页
cereal中Json序列化问题

cereal中Json序列化问题

作者: 知成 | 来源:发表于2021-04-02 11:12 被阅读0次

cereal中Json序列化问题

背景

cereal是一个轻量级的序列化,反序列化的库,可直接集成进C++源码中;最近在项目中使用cereal进行json序列化时发现了一个小问题,导致自己反序列化时总会出现内存越界问题;

问题描述

对需要序列化的类对象,或别的数据时,如果我主动的进行close(读写正常文件养成的习惯),就会使json字符串在最后少输出一个“}”,所产生的问题时反序列化时内存越界;
示例如下:(有兴趣的可以试一下)

        spData;//需要序列化的对象 std::shared_par<Data>

       std::fstream ofs("dataTest.json", std::ios::out);
       cereal::JSONOutputArchive oar(ofs);
       oar<<spData;
       ofs.close();

解决方法

为序列化过程设定一个作用范围,即加上“{}”即可;

 spData;//需要序列化的对象 std::shared_par<Data>

 std::fstream ofs("dataTest.json", std::ios::out);
 {
    cereal::JSONOutputArchive oar(ofs);
    oar<<spData;
 }
ofs.close();
  • 对爬坑的过程做记录,方便自己查询,也希望可以帮到有类似问题的朋友

相关文章

网友评论

      本文标题:cereal中Json序列化问题

      本文链接:https://www.haomeiwen.com/subject/sibfkltx.html