菜鸟笔记
提升您的技术认知

c 中json的使用详解-ag真人游戏

    jsoncpp 主要包含三个class:value、reader、writer。注意json::value 只能处理 ansi 类型的字符串,如果 c  程序是用 unicode 编码的,最好加一个 adapt 类来适配。

json内部类和方法:

    reader<是用于读取的,说的确切点,是用于将字符串转换为 json::value 对象的>

       构造函数
        1、reader();
       【拷贝构造函数】
        2、reader( const features &features );
       【将字符串或者输入流转换为json的value对象】
       【下边是相应的parse的重载函数】
        3、bool parse( const std::string &document, value &root,bool collectcomments = true );
        4、bool parse( const char *begindoc, const char *enddoc, 

                       value &root,bool collectcomments = true         

        5、bool parse( std::istream &is,value &root,bool collectcomments = true );
        6、std::string getformatederrormessages() const;

    value:<是jsoncpp 中最基本、最重要的类,用于表示各种类型的对象,jsoncpp 支持的对象类型可见                 json::valuetype 枚举值; value类的对象代表一个json值,既可以代表一个文档,也可以代表                 文档中一个值。如同json中定义的“值”一样,value是递归的> 

        【构造函数】
         1、value( valuetype type = nullvalue );
          value( int value );
          value( uint value );
          value( double value );
          value( const char *value );
          value( const char *beginvalue, const char *endvalue );
        【拷贝构造函数】
         2、value( const staticstring &value );
          value( const std::string &value );
          value( const value &other );
        【相同类型的比较、交换、类型的获取】
         3、void swap( value &other );
          valuetype type() const;
          int compare( const value &other );
        【相应的赋值运算符的重载函数】
         4、value &operator=( const value &other );
          bool operator <( const value &other ) const;
          bool operator <=( const value &other ) const;
          bool operator >=( const value &other ) const;
          bool operator >( const value &other ) const;
          bool operator ==( const value &other ) const;
          bool operator !=( const value &other ) const;
          bool operator!() const;
          value &operator[]( uint index );
          const value &operator[]( uint index ) const;
        【将value对象进行相应的类型转换】
         5、const char *ascstring() const;
          std::string asstring() const;
          const char *ascstring() const;
          std::string asstring() const;
          int asint() const;
          uint asuint() const;
          double asdouble() const;
        【相应的判断函数】
         6、bool isnull() const;
          bool isbool() const;
          bool isint() const;
          bool isuint() const;
          bool isintegral() const;
          bool isdouble() const;
          bool isnumeric() const;
          bool isstring() const;
          bool isarray() const;
          bool isobject() const;
          bool isconvertibleto( valuetype other ) const;
          bool isvalidindex( uint index ) const;
          bool ismember( const char *key ) const;
          bool ismember( const std::string &key ) const;
        【清除和扩容函数】
         7、void clear();
         void resize( uint size );
        【获取满足相应条件的value】
         8、value get( uint index, const value &defaultvalue ) const;
         value get( const std::string &key,const value &defaultvalue ) const;
         members getmembernames() const;
        【删除满足相应条件的value】
         9、value removemember( const char* key );
          value removemember( const std::string &key );
         10、void setcomment( const char *comment,commentplacement placement );
          void setcomment( const std::string &comment,commentplacement placement );
          bool hascomment( commentplacement placement ) const;
          std::string getcomment( commentplacement placement ) const;
          std::string tostyledstring()const;  

     writer:<类是一个纯虚类,并不能直接使用。在此我们使用 json::writer 的子类(派生类):
              json::fastwriter、json::styledwriter、json::styledstreamwriter。顾名思义,用                           json::fastwriter 来处理 json 应该是最快的;负责将内存中的value对象转换成json文档,

              输出到文件或者是字符串中>     

         【fastwriter】
          1、fastwriter();
          virtual ~fastwriter(){}
          void enableyamlcompatibility();
          virtual std::string write( const value &root );
         【styledwriter】
          2、styledwriter();
          virtual ~styledwriter(){}
          virtual std::string write( const value &root );  

#include 
   
    定义定义
#include 
    
     
#include "json.h"
using namespace std;
//定义jsoncpp 支持的对象类型
enum type
{
    nullvalue = 0, ///< 'null' value
    intvalue,      ///< signed integer value
    uintvalue,     ///< unsigned integer value
    realvalue,     ///< double value
    stringvalue,   ///< utf-8 string value
    booleanvalue,  ///< bool value
    arrayvalue,    ///< array value (ordered list)
    objectvalue    ///< object value (collection of name/value pairs).
};
int main()
{
    json::value root;
    root["type"] = nullvalue;
    root["name"] = "xin ma";
    root["pwd"] = "123456";
    string tmpstr = root.tostyledstring();
    
    char buff[1024] = {0};
    strcpy_s(buff, strlen(tmpstr.c_str()) 1, tmp.c_str());
    cout<<"buff_root :"<
     
      <                                 
网站地图