1#ifndef SIMDJSON_GENERIC_ONDEMAND_SERIALIZATION_INL_H
3#ifndef SIMDJSON_CONDITIONAL_INCLUDE
4#define SIMDJSON_GENERIC_ONDEMAND_SERIALIZATION_INL_H
5#include "simdjson/generic/ondemand/base.h"
6#include "simdjson/generic/ondemand/array.h"
7#include "simdjson/generic/ondemand/document-inl.h"
8#include "simdjson/generic/ondemand/json_type.h"
9#include "simdjson/generic/ondemand/object.h"
10#include "simdjson/generic/ondemand/serialization.h"
11#include "simdjson/generic/ondemand/value.h"
12#if SIMDJSON_STATIC_REFLECTION
13#include "simdjson/generic/ondemand/json_builder.h"
19inline std::string_view trim(
const std::string_view str)
noexcept {
21 size_t first = str.find_first_not_of(
" \t\n\r");
24 if (std::string_view::npos == first) {
return std::string_view(); }
25 size_t last = str.find_last_not_of(
" \t\n\r");
26 return str.substr(first, (last - first + 1));
32 auto error = x.raw_json().get(v);
33 if(error) {
return error; }
37inline simdjson_result<std::string_view>
to_json_string(SIMDJSON_IMPLEMENTATION::ondemand::document_reference& x)
noexcept {
39 auto error = x.raw_json().get(v);
40 if(error) {
return error; }
51 using namespace SIMDJSON_IMPLEMENTATION::ondemand;
53 auto error = x.type().get(t);
54 if(error !=
SUCCESS) {
return error; }
57 case json_type::array:
60 error = x.get_array().get(array);
61 if(error) {
return error; }
64 case json_type::object:
67 error = x.get_object().get(
object);
68 if(error) {
return error; }
72 return trim(x.raw_json_token());
78 auto error = x.raw_json().get(v);
79 if(error) {
return error; }
85 auto error = x.raw_json().get(v);
86 if(error) {
return error; }
90inline simdjson_result<std::string_view>
to_json_string(simdjson_result<SIMDJSON_IMPLEMENTATION::ondemand::document> x) {
91 if (x.error()) {
return x.error(); }
95inline simdjson_result<std::string_view>
to_json_string(simdjson_result<SIMDJSON_IMPLEMENTATION::ondemand::document_reference> x) {
96 if (x.error()) {
return x.error(); }
100inline simdjson_result<std::string_view>
to_json_string(simdjson_result<SIMDJSON_IMPLEMENTATION::ondemand::value> x) {
101 if (x.error()) {
return x.error(); }
105inline simdjson_result<std::string_view>
to_json_string(simdjson_result<SIMDJSON_IMPLEMENTATION::ondemand::object> x) {
106 if (x.error()) {
return x.error(); }
110inline simdjson_result<std::string_view>
to_json_string(simdjson_result<SIMDJSON_IMPLEMENTATION::ondemand::array> x) {
111 if (x.error()) {
return x.error(); }
116namespace simdjson {
namespace SIMDJSON_IMPLEMENTATION {
namespace ondemand {
118#if SIMDJSON_EXCEPTIONS
130 return (out << x.
value());
139 return (out << error);
144#if SIMDJSON_EXCEPTIONS
156 return (out << x.
value());
165 return (out << error);
170#if SIMDJSON_EXCEPTIONS
191 return (out << x.
value());
195 return (out << x.
value());
204 return (out << error);
209#if SIMDJSON_EXCEPTIONS
221 return (out << x.
value());
230 return (out << error);
A forward-only JSON array.
A document_reference is a thin wrapper around a document reference instance.
A forward-only JSON object field iterator.
An ephemeral JSON value returned during iteration.
json_type
The type of a JSON value.
The top level simdjson namespace, containing everything the library provides.
simdjson_result< std::string_view > to_json_string(SIMDJSON_IMPLEMENTATION::ondemand::document &x) noexcept
Create a string-view instance out of a document instance.
Exception thrown when an exception-supporting simdjson method is called.
The result of a simdjson operation that could fail.
simdjson_inline error_code error() const noexcept
The error.
simdjson_inline T & value() &noexcept(false)
Get the result value.