rapidjson解析json代码实例以及常见的json core dump问题

 更新时间:2019年04月08日 13:54:35   作者:stpeace  
今天小编就为大家分享一篇关于rapidjson解析json代码实例以及常见的json core dump问题,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧

rapidjson解析json代码实例

直接看代码:

#include <iostream>
#include <stdio.h>
#include<unistd.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include<sstream>
// 请自己下载开源的rapidjson
#include "rapidjson/prettywriter.h"
#include "rapidjson/rapidjson.h"
#include "rapidjson/document.h"
#include "rapidjson/stringbuffer.h"
#include "rapidjson/writer.h"
#include "rapidjson/memorystream.h"
using namespace std;
using rapidjson::Document;
using rapidjson::StringBuffer;
using rapidjson::Writer;
using namespace rapidjson;
string getStringFromJson(const string &jsStr, const string &strKey)
{
 Document document;
 if (document.Parse(jsStr.c_str()).HasParseError() || !document.HasMember(strKey.c_str())) 
 {
 return "";
 }
 const rapidjson::Value &jv = document[strKey.c_str()];
 return jv.GetString();
}
int main(int argc, char *argv[])
{
 string s = "{\"code\":0,\"msg\":\"ok\"}";
 cout << s << endl;
 cout << getStringFromJson(s, "msg") << endl;
 return 0;
}

结果:

{"code":0,"msg":"ok"}
ok

注意: 

1. 如果不进行document.Parse(jsStr.c_str()).HasParseError()判断,则很容易core dump

2. 如果不进行!document.HasMember(strKey.c_str())判断,则很容易core dump

3. code的是为0,是整数,如果调用上述getStringFromJson,会core dump,此时应该用return jv.GetInt();

OK,不多说,人生苦短,我爱rapidjson

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对脚本之家的支持。如果你想了解更多相关内容请查看下面相关链接

相关文章

  • C++ 中实现把EXCEL的数据导入数据库(ACCESS、MSSQL等)实例代码

    C++ 中实现把EXCEL的数据导入数据库(ACCESS、MSSQL等)实例代码

    这篇文章主要介绍了C++ 中实现把EXCEL的数据导入数据库(ACCESS、MSSQL等)实例代码的相关资料,需要的朋友可以参考下
    2017-04-04
  • C++递归删除一个目录实例

    C++递归删除一个目录实例

    这篇文章主要介绍了C++递归删除一个目录的实现方法,涉及到目录的操作及递归算法的应用,需要的朋友可以参考下
    2014-10-10
  • Qt编译OpenCV的实现步骤

    Qt编译OpenCV的实现步骤

    本文主要介绍了Qt编译OpenCV的实现步骤,通过详细的步骤和说明,帮助开发者在Qt环境中成功集成并编译OpenCV,从而为各类计算机视觉项目提供强大的支持,感兴趣的可以了解一下
    2024-01-01
  • C语言中static的使用方法实例详解

    C语言中static的使用方法实例详解

    static一般用于修饰局部变量,全局变量,函数,下面这篇文章主要给大家介绍了关于C语言中static用法的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2022-07-07
  • MFC程序执行过程深入剖析

    MFC程序执行过程深入剖析

    这篇文章主要介绍了MFC程序执行过程,包括对MFC执行流程的分析以及断点调试分析出的SDI程序执行流程,需要的朋友可以参考下
    2014-09-09
  • C++实现LeetCode(147.链表插入排序)

    C++实现LeetCode(147.链表插入排序)

    这篇文章主要介绍了C++实现LeetCode(147.链表插入排序),本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下
    2021-07-07
  • C语言实现简单扫雷小程序

    C语言实现简单扫雷小程序

    这篇文章主要为大家详细介绍了C语言实现简单扫雷小程序,一款大众类的益智小游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-10-10
  • C++联合体union用法实例详解

    C++联合体union用法实例详解

    这篇文章主要介绍了C++联合体union用法,较为详细的分析了C++中联合体的概念、实用技巧及相关注意事项,需要的朋友可以参考下
    2015-05-05
  • 如何用C语言去除字符串两边的空字符

    如何用C语言去除字符串两边的空字符

    本篇文章是对用C语言去除字符串两边空字符的方法进行了详细的分析介绍,需要的朋友参考下
    2013-05-05
  • Qt简单编程实现UDP通讯

    Qt简单编程实现UDP通讯

    UDP数据报协议是一个面向无连接的传输层报文协议,它简单易用,不存在 TCP协议“粘包”的问题,下面我们就来看看如何使用qt简单实现UDP通讯吧
    2024-04-04

最新评论