【json】jsoncpp函数接口

您所在的位置:网站首页 json_value函数 【json】jsoncpp函数接口

【json】jsoncpp函数接口

2024-06-03 14:33| 来源: 网络整理| 查看: 265

json、json-c、jsoncpp是3套不同的代码,其中的函数接口也大不一样,其中jsoncpp针对c++语言编写的。json-c比json要复杂一些,处理、容错能力稍强一些。

jsoncpp中json被抽象成了Value类,jsoncpp中还有Writer和Reader类,分别对json进行输出和输入

Reader类:从文本解析json 构造函数 Reader(); //空构造函数 Reader(const Features& features);// 用法:Reader(Features::strictMode()); 成员函数 //将string对象解析到root中 bool parse(const std::string& document, Value& root, bool collectComments = true); bool parse(const char* beginDoc, const char* endDoc, Value& root, bool collectComments = true); //从文件中解析数据到root中,JSONCPP_ISTREAM就是std::istream bool parse(JSONCPP_ISTREAM& is, Value& root, bool collectComments = true);

到此基本够用可,其他成员函数参看相应文件

Writer类:将json解析成字符串 Writer是个基类,代码很少,如下: class JSON_API Writer { public: virtual ~Writer(); virtual JSONCPP_STRING write(const Value& root) = 0; };

Writer派生出StreamWriter,FastWriter,StyledWriter等几类

StreamWriter类:作用是将json写到配置文件里去, virtual int write(Value const& root, JSONCPP_OSTREAM* sout) = 0;//纯虚函数,以供派生

全局函数:

//全局函数:将json输出成string类型 JSONCPP_STRING JSON_API writeString(StreamWriter::Factory const& factory, Value const& root); FastWriter类: JSONCPP_STRING write(const Value& root) JSONCPP_OVERRIDE; StyledWriter类: JSONCPP_STRING write(const Value& root) JSONCPP_OVERRIDE; Value类

Json::value类是json对象的一个封装。它可以代表以下几种类型的值: 有符号整型 无符号整型 双精度 字符串 布尔类型 NULL 数组值 键值对 集合

构造函数: Value( ValueType type = nullValue ); Value( Int value ); Value( UInt value ); Value( double value ); Value( const char *value ); Value( const char *beginValue, const char *endValue ); //使用方法、例子 Json::Value null_value; // null Json::Value arr_value(Json::arrayValue); // [] Json::Value obj_value(Json::objectValue); // {}

以上构造函数可以实例化一个指定值类型的Json::value对象

Value( const StaticString &value ); Value( const std::string &value ); # ifdef JSON_USE_CPPTL Value( const CppTL::ConstString &value ); # endif Value( bool value ); Value( const Value &other ); //Example of usage: Json::Value aValue( StaticString("some text") ); Value &operator=( const Value &other ); //直接利用已有的Json::value对象赋值 void swap( Value &other ); //交换json对象 ValueType type() const; //返回值类型

下面这下函数指定了Json::value对象的返回值类型:

const char *asCString() const; std::string asString() const; # ifdef JSON_USE_CPPTL CppTL::ConstString asConstString() const; # endif Int asInt() const; UInt asUInt() const; double asDouble() const; bool asBool() const;

判断指定键值对的值类型:

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; UInt size() const; //返回数组或对象中值的数量 bool empty() const; //空数组或者空对象或NULL的话返回true,否则返回false void clear(); //清空对象或数组成员

几个访问键值对的函数:

Value &operator[]( UInt index ); //访问数组元素 const Value &operator[]( UInt index ) const; Value &operator[]( const char *key ); //通过名字访问键值对 const Value &operator[]( const char *key ) const; Value &operator[]( const std::string &key ); const Value &operator[]( const std::string &key ) const; Value &operator[]( const StaticString &key );


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3