zoukankan      html  css  js  c++  java
  • jsoncpp简单示例

    1、 编译jsoncpp
      从(http://jsoncpp.sourceforge.net/)下载源码包“jsoncpp-src-0.5.0.tar.gz”,解压后在其解压后目录中运行
    $ scons platform=linux-gcc
      编译出来的库文件在其libs/ linux-gcc-4.4.2目录下,有libjson_linux-gcc-4.4.2_libmt.so和libjson_linux-gcc-4.4.2_libmt.a。头文件在解压目录下的include中。我的jsoncpp安装在$HOME/usr/jsoncpp下。

    $ mkdir ~/usr/jsoncpp

    $ cp -r include ~/usr/jsoncpp

    $ cp -r libs ~/usr/jsoncpp

    2、 Jsoncpp简单实例

    1) 反序列化Json对象
      比如一个Json对象的字符串序列如下,其中”array”:[...]表示Json对象中的数组:

    {“key1”:”value1”,”array”:[{“key2”:”value2”},{“key2”:”value3”},{“key2”:”value4”}]}

      那怎么分别取到key1和key2的值呢,代码如下所示:

    #include <iostream>
    #include <string>
    #include "json/json.h"
    
    int main(void)
    {
         std::string strValue = "{\"key1\":\"value1\",\"array\":[{\"key2\":\"value2\"},{\"key2\":\"value3\"},{\"key2\":\"value4\"}]}";
    
         Json::Reader reader;
         Json::Value value;
    
         if (reader.parse(strValue, value))
         {
    	  std::string out = value["key1"].asString();
    	  std::cout << out << std::endl;
    	  const Json::Value arrayObj = value["array"];
    	  for (int i=0; i<arrayObj.size(); i++)
    	  {
    	       out = arrayObj[i]["key2"].asString();
    	       std::cout << out;
    	       if (i != arrayObj.size() - 1)
    		    std::cout << std::endl;
    	  }
         }
         return 0;
    }
    
    编译连接
    $ g++ jscpp1.cpp -I$HOME/usr/jsoncpp/include/ ~/usr/jsoncpp/libs/linux-gcc-4.5.2/libjson_linux-gcc-4.5.2_libmt.a
    $ ./a.out
    value1
    value2
    value3
    value4

    2)序列化Json对象
      先构建一个Json对象,此Json对象中含有数组,然后把Json对象序列化成字符串,代码如下:
    #include <iostream>
    #include <string>
    #include "json/json.h"
    
    int main(void)
    {
         Json::Value root;
         Json::Value arrayObj;
         Json::Value item;
    
         for (int i = 0; i < 10; i ++)
         {
    	  item["key"] = i;
    	  arrayObj.append(item);
         }
    
         root["key1"] = "value1";
         root["key2"] = "value2";
         root["array"] = arrayObj;
         //root.toStyledString();
         std::string out = root.toStyledString();
         std::cout << out << std::endl;
         return 0;
    }
    

    编译连接
    $ g++ jscpp2.cpp -I$HOME/usr/jsoncpp/include/ ~/usr/jsoncpp/libs/linux-gcc-4.5.2/libjson_linux-gcc-4.5.2_libmt.a
    $ ./a.out
    {
       "array" : [
          {
             "key" : 0
          },
          {
             "key" : 1
          },
          {
             "key" : 2
          },
          {
             "key" : 3
          },
          {
             "key" : 4
          },
          {
             "key" : 5
          },
          {
             "key" : 6
          },
          {
             "key" : 7
          },
          {
             "key" : 8
          },
          {
             "key" : 9
          }
       ],
       "key1" : "value1",
       "key2" : "value2"
    }


      注:以上两个代码来自网上,这两个实例很好,故在此借用。

      (转载时请注明作者和出处。未经许可,请勿用于商业用途)
      更多文章请访问我的Blog: http://www.cnblogs.com/logicbaby

    1. 编译jsoncpp

  • 相关阅读:
    设计模式代理模式
    设计模式建造者模式(生成器模式)
    SQL SERVER SA 无法登陆的解决方法
    [转]ASP.NET编程技巧10则
    键盘伪码
    MICROSOFT和ADOBE干上了?
    WINDOWS2003域控制器禁止U盘
    Dameware在Winxp下权限配置
    FTP操作
    WinForm 鼠标在页面无操作时页面关闭
  • 原文地址:https://www.cnblogs.com/logicbaby/p/2096794.html
Copyright © 2011-2022 走看看