greenJson_C++_Lib 之七:定义JSON字符串解析的目标物体

//<Part.七> JSON字符串解析目标物

/*JSON字符串解析目标物,可能是JSON对象,也可能是原子数据、JSON对象的数组。
还有一种可能:当找到一个非成员节点时本来是要忽略的,但不能忽略,这时目标物栈压入一个假目标物体*/
class jsonObjectTarget {
public:
	//JSON对象
	jsonObjectBaseClass* ptrOwnObj;
	MemberDefineCategory cateOwnObj;//用于标识ptrOwnObj的类别

	//记录pObj当前正在分析的成员
	jsonObjectMemberInfo parsingMemInfo;

	jsonObjectTarget() {
		ptrOwnObj = NULL;
		cateOwnObj = MemberDefineCategory_Undefine;
	}

	//当前栈上对象是否数组类别
	bool isOwnObjArray() {
		return MemberDefineCategory_Array == cateOwnObj;
	}
	//当前栈上对象是否单个类别
	bool isOwnObjSingle() {
		return MemberDefineCategory_Single == cateOwnObj;
	}
	//设置栈上对象为数组类别
	void setOwnObjArray() {
		cateOwnObj = MemberDefineCategory_Array;
	}
	//设置栈上对象为单个类别
	void setOwnObjSingle() {
		cateOwnObj = MemberDefineCategory_Single;
	}
	//设置JSON对象
	void setOwnObj(jsonObjectBaseClass* p) {
		ptrOwnObj = p;
	}
	//设置假物体:用于不存在的JSON节点解析
	void setFake() {
		ptrOwnObj = NULL;
	}
	//是否一个假物体:用于不存在的JSON节点解析
	bool isFake() {
		return ptrOwnObj == NULL;
	}
	//获取成员信息
	void getMemberInfo(const string& key) {
		ptrOwnObj->getMemberInfo(key, parsingMemInfo);
	}
};

JSON字符串解析过程,见第二章。jsonObjectTarget 存在于物体目标栈。

发布了11 篇原创文章 · 获赞 1 · 访问量 300

猜你喜欢

转载自blog.csdn.net/u011697262/article/details/103940833