MFC 下JSONCPP 的使用 C++ JSON解析

前端之家收集整理的这篇文章主要介绍了MFC 下JSONCPP 的使用 C++ JSON解析前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

JSON是一个轻量级的数据定义格式,比起XML易学易用,而扩展功能不比XML差多少,用之进行数据交换是一个很好的选择

JSON的全称为:JavaScript Object Notation ,顾名思义,JSON是用于标记javascript对象的,详情参考http://www.json.org/。

本文选择第三方库JsonCpp来解析json,JsonCpp是比较出名的c++解析库,在json官网也是首推的。

JsonCpp简介

JsonCpp主要包含三种类型的class:Value Reader Writer。

jsoncpp中所有对象、类名都在namespace json中,包含json.h即可。

注意: Json::Value只能处理ANSI类型的字符串,如果C++程序使用Unicode编码的,最好加一个Adapt类来适配。

下载和编译

下载地址是:http://sourceforge.net/projects/jsoncpp/

解压之后得到jsoncpp-src-0.5.0文件夹,我们只需要jsoncpp的头文件和cpp文件,其中jsonscpp的头文件位于jsoncpp-src-0.5.0/include/json/,jsoncpp的cpp文件位于jsoncpp-src-0.5.0/src/lib_json/。

本人c++刚开始用,所以就用了个笨方法,把头文件和cpp文件全部加入到工程里面来,

步骤:

1.分别把include/json/ 和 src/lib/下的.h 和 .cpp 文件加入到工程里,别的不用加入。

2.生成工程

会报一些错误,解决方案 1 ,调整include的路径 2 在三个.cpp 头文件加入#include "StdAfx.h";然后在生成项目就不会报错了

3.想在那里用直接包含 json.h 头文件就可以了。


下面简单说下在网上看到的jsoncpp的用法

反序列化Json对象

 
 
  1. {
  2. "name":"json″,
  3. "array":[
  4. {
  5. "cpp":"jsoncpp"
  6. },
  7. {
  8. "java":"jsoninjava"
  9. },
  10. {
  11.  "PHP":"support"
  12. }
  13. ]
  14. }

我们要实现这个json的反序列号代码如下:

  
  
  • voidreadJson(){
  • usingnamespacestd;
  • std::stringstrValue="{\"name\":\"json\",\"array\":[{\"cpp\":\"jsoncpp\"},{\"java\":\"jsoninjava\"},{\"PHP\":\"support\"}]}";
  • Json::Readerreader;
  • Json::Valuevalue;
  • if(reader.parse(strValue,value))
  • {
  • std::stringout=value["name"].asString();
  • std::cout<<out<<std::endl;
  • constJson::ValuearrayObj=value["array"];
  •  for(unsignedinti=0;i<arrayObj.size();i++)
  • {
  • if(!arrayObj[i].isMember("cpp"))
  • continue;
  • out=arrayObj[i]["cpp"].asString();
  • std::cout<<out;
  • if(i!=(arrayObj.size()-1))
  • std::cout<<std::endl;
  •  }
  • }
  • }
  • 序列化Json对象

     
     
    1. voidwriteJson(){
    2. usingnamespacestd;
    3. Json::Valueroot;
    4. Json::ValuearrayObj;
    5. Json::Valueitem;
    6. item["cpp"]="jsoncpp";
    7. item["java"]="jsoninjava";
    8. item["PHP"]="support";
    9. arrayObj.append(item);
    10. root["name"]="json";
    11. root["array"]=arrayObj;
    12. root.toStyledString();
    13. std::stringout=root.toStyledString();
    14. std::cout<<out<<std::endl;
    15.  }
    原文链接:https://www.f2er.com/json/290616.html

    猜你在找的Json相关文章