当前位置: 首页 > 编程笔记 >

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

宋高寒
2023-03-14
本文向大家介绍rapidjson解析json代码实例以及常见的json core dump问题,包括了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

总结

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

 类似资料:
  • 本文向大家介绍Python解析json代码实例解析,包括了Python解析json代码实例解析的使用技巧和注意事项,需要的朋友参考一下 这篇文章主要介绍了Python解析json代码实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 什么是json格式: JSON(JavaScript Object Notation):一种轻量级数据交换格式

  • 本文向大家介绍C++常见异常处理原理及代码示例解析,包括了C++常见异常处理原理及代码示例解析的使用技巧和注意事项,需要的朋友参考一下 编程中常见的错误 程序的编译错误——比较好解决,主要是一些语法错误 程序的运行错误——产生因素较为复杂,如空间不够,下标越界,访问非法空间等。 异常是指程序运行时出现的不正常,可分为一下几类: CPU异常;如在计算过程中,出现除数为0的情况。 内存异常,如: 使用

  • 本文向大家介绍php+ajax+json 详解及实例代码,包括了php+ajax+json 详解及实例代码的使用技巧和注意事项,需要的朋友参考一下 php+ajax+json 实例代码 html页面:  php页面: 使用post方式 感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

  • 本文向大家介绍JSON对象 详解及实例代码,包括了JSON对象 详解及实例代码的使用技巧和注意事项,需要的朋友参考一下 前面的话   json(javascript object notation)全称是javascript对象表示法,它是一种数据交换的文本格式,而不是一种编程语言,用于读取结构化数据。2001年由Douglas Crockford提出,目的是取代繁琐笨重的XML格式。本文将详细介

  • 本文向大家介绍C++的虚析构详解及实例代码,包括了C++的虚析构详解及实例代码的使用技巧和注意事项,需要的朋友参考一下 C++的虚析构   最近准备复习一遍所有的知识点,先从基础开始做起,用几分钟写个继承和析构吧。   父类为A,子类为B,代码如下: 这个时候在main函数里, 定义一个A的对象,A a;运行输出结果为:构造A 析构A。 定义一个B的对象, B b;运行的输出结果为:构造B 析构B

  • 本文向大家介绍Java中io流解析及代码实例,包括了Java中io流解析及代码实例的使用技巧和注意事项,需要的朋友参考一下 IO流 Java中IO流分为两种,字节流和字符流,顾名思义字节流就是按照字节来读取和写入的,字符刘是按照字符来存取的;常用的文件读取用的就是字符流,在网络通信里面用的就是字节流 下面这张图是Java中IO流的总体框架: 字节流 Java中字节流一般都是以stream结尾的,输

  • 本文向大家介绍Python threading.local代码实例及原理解析,包括了Python threading.local代码实例及原理解析的使用技巧和注意事项,需要的朋友参考一下 Python的线程操作在旧版本中使用的是thread模块,在Python27和Python3中引入了threading模块,同时thread模块在Python3中改名为_thread模块,threading模块相

  • 本文向大家介绍linux IPC之socket解析及实例代码,包括了linux IPC之socket解析及实例代码的使用技巧和注意事项,需要的朋友参考一下 Linux下的Socket通信是一种基于文件的IPC通信,也可以是基于其他设备的IPC通信。它可以在本机内不同进程间实现通信,也可以在实现不同主机之间的通信。 socket的创建步骤 服务端 1.通过socket()函数创建socket 2.通