当前位置: 首页>>代码示例>>C++>>正文


C++ JSONElement::setName方法代码示例

本文整理汇总了C++中JSONElement::setName方法的典型用法代码示例。如果您正苦于以下问题:C++ JSONElement::setName方法的具体用法?C++ JSONElement::setName怎么用?C++ JSONElement::setName使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在JSONElement的用法示例。


在下文中一共展示了JSONElement::setName方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。

示例1: getDocument

void JSONUtil::getDocument(const string& jsonTxt, JSONElement& root)
{
	string json(jsonTxt);
	root.setType(JSONElement::JSON_OBJECT);
	root.setName("_JSON_ROOT");
	int arrst = json.find("[");
	int objst = json.find("{");
	if(json.find("{")!=string::npos && json.find("}")!=string::npos && (objst<arrst || arrst==(int)string::npos))
	{
		root.setType(JSONElement::JSON_OBJECT);
		StringUtil::replaceFirst(json, "{", "");
		StringUtil::replaceLast(json, "}", "");
		readJSON(json,false,&root);
	}
	else if(json.find("[")!=string::npos && json.find("]")!=string::npos)
	{
		root.setType(JSONElement::JSON_ARRAY);
		StringUtil::replaceFirst(json, "[", "");
		StringUtil::replaceLast(json, "]", "");
		readJSON(json,true,&root);
	}
}
开发者ID:GYGit,项目名称:ffead-cpp,代码行数:22,代码来源:JSONUtil.cpp

示例2: readJSON

void JSONUtil::readJSON(string& json, const bool& isarray, JSONElement *par)
{
	if(json=="")
		return;
	string name, value;
	if(!isarray)
	{
		size_t stn = json.find("\"");
		while(stn!=string::npos && stn>0 && json.at(stn-1)=='\\')
		{
			stn = json.find("\"", stn+1);
			if(stn==0)
			{
				stn = string::npos;
			}
		}
		if(stn==string::npos)
			throw ("invalid json - no start '\"' found for name parameter");
		size_t enn = json.find("\"", stn+1);
		while(enn!=string::npos && enn>0 && json.at(enn-1)=='\\')
		{
			enn = json.find("\"", enn+1);
			if(enn==0)
			{
				enn = string::npos;
			}
		}
		if(enn==string::npos)
			throw ("invalid json - no end '\"' found for name parameter");
		if(stn!=enn-1)
			name = json.substr(stn+1, (enn-stn-1));
		//StringUtil::trim(name);
		json = json.substr(enn+1);
		StringUtil::trim(json);
		size_t vst = json.find(":");
		if(vst==string::npos)
			throw ("invalid json - no ':' found");
		else if(vst!=0)
			throw ("invalid json - invalid json - invalid string before ':' found");
		json = json.substr(vst+1);
	}
	JSONElement* element = new JSONElement;
	element->setName(name);

	StringUtil::trim(json);
	size_t env = json.find(",");
	size_t obs = json.find("{");
	size_t ars = json.find("[");
	if(obs==0)
	{
		readBalancedJSON(value, json, false, obs);
		element->setType(JSONElement::JSON_OBJECT);
	}
	else if(ars==0)
	{
		readBalancedJSON(value, json, true, ars);
		element->setType(JSONElement::JSON_ARRAY);
	}
	else if(env==string::npos)
	{
		value = json;
		json = "";
		element->setType(JSONElement::JSON_STRING);
	}
	else
	{
		if(obs!=string::npos && env==0 && (obs<ars || ars==string::npos))
		{
			readBalancedJSON(value, json, false, obs);
			element->setType(JSONElement::JSON_OBJECT);
		}
		else if(ars!=string::npos && env==0 && (ars<obs || obs==string::npos))
		{
			readBalancedJSON(value, json, true, ars);
			element->setType(JSONElement::JSON_ARRAY);
		}
		else if(obs!=string::npos && obs<env && (obs<ars || ars==string::npos))
		{
			readBalancedJSON(value, json, false, obs);
			element->setType(JSONElement::JSON_OBJECT);
		}
		else if(ars!=string::npos && ars<env && (ars<obs || obs==string::npos))
		{
			readBalancedJSON(value, json, true, ars);
			element->setType(JSONElement::JSON_ARRAY);
		}
		else
		{
			value = json.substr(0, env);
			json = json.substr(env+1);
			element->setType(JSONElement::JSON_STRING);
		}
	}
	if(value=="")
	{
		string ex = "invalid json - no value object found for name "+ name;
		throw (ex.c_str());
	}
	if(element->getType()!=JSONElement::JSON_OBJECT && element->getType()!=JSONElement::JSON_ARRAY)
	{
//.........这里部分代码省略.........
开发者ID:GYGit,项目名称:ffead-cpp,代码行数:101,代码来源:JSONUtil.cpp


注:本文中的JSONElement::setName方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。