xrpld
Toggle main menu visibility
Loading...
Searching...
No Matches
libxrpl
json
libxrpl/json/Output.cpp
1
#include <xrpl/json/Output.h>
2
3
#include <xrpl/json/Writer.h>
4
#include <xrpl/json/json_value.h>
5
6
#include <
string
>
7
8
namespace
json
{
9
10
namespace
{
11
12
void
13
outputJson
(
Value
const
& value,
Writer
& writer)
14
{
15
switch
(value.type())
16
{
17
case
ValueType::Null
: {
18
writer.output(
nullptr
);
19
break
;
20
}
21
22
case
ValueType::Int
: {
23
writer.output(value.asInt());
24
break
;
25
}
26
27
case
ValueType::UInt
: {
28
writer.output(value.asUInt());
29
break
;
30
}
31
32
case
ValueType::Real
: {
33
writer.output(value.asDouble());
34
break
;
35
}
36
37
case
ValueType::String
: {
38
writer.output(value.asString());
39
break
;
40
}
41
42
case
ValueType::Boolean
: {
43
writer.output(value.asBool());
44
break
;
45
}
46
47
case
ValueType::Array
: {
48
writer.startRoot(
Writer::CollectionType::Array
);
49
for
(
auto
const
& i : value)
50
{
51
writer.rawAppend();
52
outputJson
(i, writer);
53
}
54
writer.finish();
55
break
;
56
}
57
58
case
ValueType::Object
: {
59
writer.startRoot(
Writer::CollectionType::Object
);
60
auto
members = value.getMemberNames();
61
for
(
auto
const
& tag : members)
62
{
63
writer.rawSet(tag);
64
outputJson
(value[tag], writer);
65
}
66
writer.finish();
67
break
;
68
}
69
}
// switch
70
}
71
72
}
// namespace
73
74
void
75
outputJson
(
Value
const
& value,
Output
const
& out)
76
{
77
Writer
writer(out);
78
outputJson
(value, writer);
79
}
80
81
std::string
82
jsonAsString
(
Value
const
& value)
83
{
84
std::string
s;
85
Writer
writer(
stringOutput
(s));
86
outputJson
(value, writer);
87
return
s;
88
}
89
90
}
// namespace json
std::string
json::Value
Represents a JSON value.
Definition
json_value.h:117
json::Writer
Writer implements an O(1)-space, O(1)-granular output JSON writer.
Definition
json/Writer.h:110
json::Writer::CollectionType::Array
@ Array
Definition
json/Writer.h:112
json::Writer::CollectionType::Object
@ Object
Definition
json/Writer.h:112
json
JSON (JavaScript Object Notation).
Definition
json_errors.h:5
json::Output
std::function< void(std::string_view)> Output
Definition
include/xrpl/json/Output.h:11
json::outputJson
void outputJson(json::Value const &, Output const &)
Writes a minimal representation of a Json value to an Output in O(n) time.
Definition
libxrpl/json/Output.cpp:75
json::jsonAsString
std::string jsonAsString(json::Value const &)
Return the minimal string representation of a json::Value in O(n) time.
Definition
libxrpl/json/Output.cpp:82
json::ValueType::UInt
@ UInt
unsigned integer value
Definition
json_value.h:24
json::ValueType::Int
@ Int
signed integer value
Definition
json_value.h:23
json::ValueType::String
@ String
UTF-8 string value.
Definition
json_value.h:26
json::ValueType::Boolean
@ Boolean
bool value
Definition
json_value.h:27
json::ValueType::Array
@ Array
array value (ordered list)
Definition
json_value.h:28
json::ValueType::Object
@ Object
object value (collection of name/value pairs).
Definition
json_value.h:29
json::ValueType::Real
@ Real
double value
Definition
json_value.h:25
json::ValueType::Null
@ Null
'null' value
Definition
json_value.h:22
json::stringOutput
Output stringOutput(std::string &s)
Definition
include/xrpl/json/Output.h:14
string
Generated by
1.17.0