示例#1
0
bool JValue::put(const JValue& key, const JValue& value)
{
#if PBNJSON_ZERO_COPY_STL_STR
	m_children.push_back(value.m_input);
	m_children.push_back(key.m_input);
	m_children.insert(m_children.end(), value.m_children.begin(), value.m_children.end());
#endif
	return jobject_set2(m_jval, key.peekRaw(), value.peekRaw());
}
示例#2
0
bool JValue::put(size_t index, const JValue& value)
{
#if PBNJSON_ZERO_COPY_STL_STR
	m_children.push_back(value.m_input);
	m_children.insert(m_children.end(), value.m_children.begin(), value.m_children.end());
#endif
	return jarray_set(m_jval, index, value.peekRaw());
}
示例#3
0
bool JValue::append(const JValue& value)
{
#if PBNJSON_ZERO_COPY_STL_STR
	if (!value.m_input.empty() || (value.isString() && value.asString().empty())) {
		m_children.push_back(value.m_input);
	}
	m_children.insert(m_children.end(), value.m_children.begin(), value.m_children.end());
#endif
	return jarray_set(m_jval, jarray_size(m_jval), value.peekRaw());
}
示例#4
0
std::string JGenerator::serialize(const JValue &val, bool quoteSingleString)
{
	const char *str = jvalue_tostring_simple(val.peekRaw());
	if (UNLIKELY(str == NULL)) {
		return "";
	}

	if (!quoteSingleString && val.isString())
	{
		size_t length = strlen(str);
		if ( (length >= 2) &&
			 (str[0] == '"') &&
			 (str[length-1] == '"') )
		{
			 return std::string(str+1, length-2);
		}
	}

	return str;
}
示例#5
0
bool JGenerator::toString(const JValue &obj, const JSchema& schema, std::string &asStr)
{
	if (m_resolver) {
		JSchemaResolverWrapper resolverWrapper(m_resolver);
		JSchemaResolver schemaresolver;
		schemaresolver.m_resolve = &(resolverWrapper.sax_schema_resolver);
		schemaresolver.m_userCtxt = &resolverWrapper;
		schemaresolver.m_inRecursion = 0;
		if (!jschema_resolve_ex(schema.peek(), &schemaresolver)) {
			asStr = "";
			return false;
		}
	}
	const char *str = jvalue_tostring(obj.peekRaw(), schema.peek());

	if (str == NULL) {
		asStr = "";
		return false;
	}
	asStr = str;
	return true;
}