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()); }
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()); }
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()); }
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; }
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; }