c++ rapidjson读取json文件 解析

#include <iostream>
#include <string>
#include "rapidjson/document.h"
#include "rapidjson/writer.h"
#include "rapidjson/stringbuffer.h"

using namespace rapidjson;
using namespace std;

string readfile(const char *filename){
    FILE *fp = fopen(filename, "rb");
    if(!fp){
        printf("open failed! file: %s", filename);
        return "";
    }

    char *buf = new char[1024*16];
    int n = fread(buf, 1, 1024*16, fp);
    fclose(fp);

    string result;
    if(n>=0){
        result.append(buf, 0, n);
    }
    delete []buf;
    return result;
}

int parseJSON(const char *jsonstr){
    Document d;
    if(d.Parse(jsonstr).HasParseError()){
        printf("parse error!\n");
        return -1;
    }
    if(!d.IsObject()){
        printf("should be an object!\n");
        return -1;
    }
    if(d.HasMember("errorCode")){
        Value &m = d["errorCode"];
        int v = m.GetInt();
        printf("errorCode: %d\n", v);
    }
    printf("show numbers: \n");
    if(d.HasMember("numbers")){
        Value &m = d["numbers"];
        if(m.IsArray()){
            for(int i = 0; i < m.Size(); i++){
                Value &e = m[i];
                int n = e.GetInt();
                printf("%d,", n);
            }
        }
    }
    return 0;
}

int parseJSON2(const char *jsonstr){
    Document d;
    if(d.Parse(jsonstr).HasParseError()){
        throw string("parse error!\n");
    }
    if(!d.IsObject()){
        throw string("should be an object!\n");
    }
    if(!d.HasMember("errorCode")){
        throw string("‘errorCode‘ no found!");
    }

    Value &m = d["errorCode"];
    int v = m.GetInt();
    printf("errorCode: %d\n", v);
    printf("show numbers:\n");
    if(d.HasMember("numbers")){
        Value &m = d["numbers"];
        if(m.IsArray()){
            for(int i = 0; i < m.Size(); i++){
                Value &e = m[i];
                int n = e.GetInt();
                printf("%d", n);
            }
        }
    }
    return 0;
}

/*
 //path="/Users/macname/Desktop/example.json"

 {
 "errorCode":0,
 "reason":"OK",
 "result":{"userId":10086,"name":"中国移动"},
 "numbers":[110,120,119,911]
 }

 */
int main(){

    string jsonstr = readfile("/Users/macname/Desktop/example.json");
    //parseJSON(jsonstr.c_str());

    try{
        parseJSON2(jsonstr.c_str());
    }catch(string e){
        printf("error: %s \n", e.c_str());
    }
    getchar();
    return 0;
}

输出

errorCode: 0
show numbers:
110120119911

原文地址:https://www.cnblogs.com/sea-stream/p/11105387.html

时间: 2024-08-07 10:12:43

c++ rapidjson读取json文件 解析的相关文章

cocos2dx 读取json及解析

ball.json 数据例如以下: { "entities": [ { "entity": { "TapOpposite": 0, "Interval": 0.95, "BallNum": 1 } }, { "entity": { "TapOpposite": 0, "Interval": 0.91, "BallNum": 2

【赵强老师】在Spark SQL中读取JSON文件

Spark SQL是Spark用来处理结构化数据的一个模块,它提供了一个编程抽象叫做DataFrame并且作为分布式SQL查询引擎的作用.为什么要学习Spark SQL?如果大家了解Hive的话,应该知道它是将Hive SQL转换成MapReduce然后提交到集群上执行,大大简化了编写MapReduce的程序的复杂性,由于MapReduce这种计算模型执行效率比较慢.所以Spark SQL的应运而生,它是将Spark SQL转换成RDD,然后提交到集群执行,执行效率非常快!同时Spark SQL

Unity基础 用C#脚本读取JSON文件数据

读取JSON文件数据网上有很多方法吗,这里采用SimpleJSON,关于SimpleJSON的介绍参考以下链接:http://wiki.unity3d.com/index.php/SimpleJSON,使用之前要先导入SimpleJSON的相关文件. JSON文件名:achieve.json,文件内容: { "30002":{"achieve_id":30002,"achieve_name":"连胜","achiev

jqery ajax读取json文件

json文件数据 [ {"name":"哈哈··","email":"邮箱01","gender":"男","hobby":["上网","打球"]}, {"name":"呵呵··","email":"邮箱02","gender":

Python 读取json文件

创建json文件: 1 { 2 "fontFamily": "微软雅黑", 3 "fontSize": 12, 4 "BaseSettings":{ 5 "font":1, 6 "size":2 7 } 8 } 读取json文件: 1 import json 2 3 def loadFont(): 4 f = open("Settings.json", encodin

Echarts-echart和springMVC实现堆栈图(读取JSON文件数据)

这篇echarts的堆栈图主要是根据这篇D3.js堆栈图(http://blog.csdn.net/u013147600/article/details/46770415 )实现的. 效果图: 1.JSON文件数据: { "name":"某市2005-1010年利润情况", "product": [ { "name": "PC" , "sales": [ { "year&quo

读取JSON文件并 排序,分组,

读取.json文件 public string GetFileJson(string filepath) { string json = string.Empty; using (FileStream fs = new FileStream(filepath, FileMode.Open, System.IO.FileAccess.Read, FileShare.ReadWrite)) { using (StreamReader sr = new StreamReader(fs, Encodin

接口自动化(三)--读取json文件中的数据

上篇讲到实际的请求数据放置在json文件内,这一部分记述一下python读取json文件的实现. 代码如下(代码做了简化,根据需要调优:可做一些容错处理): 1 import json 2 3 class operateJson(): 4 def __init__(self,jsonPath=None): 5 self.jsonPath = jsonPath #传入json文件路径 6 7 #读取json文件的内容 8 def readJson(self): 9 with open(self.j

【微信】微信小程序 微信开发工具中新创建的json文件,编译报错VM1781:2 pages/module/module.json 文件解析错误 SyntaxError: Unexpected end of JSON input

如果新创建报错:编译报错VM1781:2 pages/module/module.json 文件解析错误  SyntaxError: Unexpected end of JSON input 解决方法: 在JSON文件中添加 即可解决 { } 原文地址:https://www.cnblogs.com/sxdcgaq8080/p/9076271.html