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 :"<
<