ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

json文件解析

2022-06-16 18:33:41  阅读:170  来源: 互联网

标签:std 文件 include string int Tool json 解析


Tool_json.h

#pragma once
#include "json.h"

class Tool_json
{
public:
    Tool_json();
    ~Tool_json();
public:
    //二进制读取file_path路径下的json文件,保存到m_JsonRoot
    int Init(const std::string& file_path);
    //获取指定关键字对应的std::string信息
    int GetConfigInfo(const std::string& key, std::string& value);
    //获取指定关键字对应的int信息
    int GetConfigInfo(const std::string& key, int& value);
    //获取指定关键字对应的double信息
    int GetConfigInfo(const std::string& key, double& value);
protected:
    //json文件根节点对象
    Json::Value m_JsonRoot;
};

Tool_json.cpp

#include "Tool_json.h"
#include "errorDefine.h"
#include <sstream>
#include <fstream>
#include <iostream>

#include "km_log.h"


Tool_json::Tool_json()
{
}

Tool_json::~Tool_json()
{
}

int Tool_json::Init(const std::string & file_path)
{
    Json::Reader json_reader;
    std::ifstream in(file_path, std::ios::binary);
    if (!in.is_open()) {
        KM_APP_LOG_ERROR("Tool_json::Init jsonFile fail.file_path:" << file_path);
        return TOOLJSON_INIT_ERROR;
    }

    int end_parse = 1;
    do {
        bool ret = json_reader.parse(in, m_JsonRoot);
        if (ret != true) {
            end_parse = 0;
            break;
        }
    } while (1);
    in.close();
    KM_APP_LOG_INFO("Tool_json::Init successed.file_path:" << file_path);
    return 1;
}

int Tool_json::GetConfigInfo(const std::string& key, std::string& value)
{
    if (!m_JsonRoot[key].isString()) 
    {
        KM_APP_LOG_ERROR("Tool_json::GetConfigInfo fail:" << key);
        return TOOLJSON_GET_ERROR;
    }

    value = m_JsonRoot[key].asString();
    return RET_SUCCESS;
}

int Tool_json::GetConfigInfo(const std::string& key, int& value)
{
    if (!m_JsonRoot[key].isInt())
    {
        KM_APP_LOG_ERROR("ConfigMgr::GetConfigInfo root is not key.key:" << key);
        return TOOLJSON_GET_ERROR;
    }

    value = m_JsonRoot[key].asInt();
    return RET_SUCCESS;
}

int Tool_json::GetConfigInfo(const std::string & key, double & value)
{
    if (!m_JsonRoot[key].isDouble())
    {
        KM_APP_LOG_ERROR("ConfigMgr::GetConfigInfo root is not key.key:" << key);
        return TOOLJSON_GET_ERROR;
    }
    
    value = m_JsonRoot[key].asInt();
    return RET_SUCCESS;
}

 

标签:std,文件,include,string,int,Tool,json,解析
来源: https://www.cnblogs.com/deep-wj/p/16382993.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有