FazBrowse GitHub Viewer
|
Trending
|
URL:
|
Home
Tools:
[Download Repo ZIP]
[View Raw Code]
[Original HTTPS Page]
poco/JSON/src/Stringifier.cpp at develop · cppfool/poco · GitHub
cppfool
/
poco
Public
forked from
pocoproject/poco
Notifications
You must be signed in to change notification settings
Fork
0
Star
0
Code
Issues
0
Pull requests
0
Actions
Projects
Security and quality
0
Insights
Additional navigation options
Code
Issues
Pull requests
Actions
Projects
Security and quality
Insights
Expand file tree
Breadcrumbs
poco
/
JSON
/
src
/
Stringifier.cpp
Copy path
More file actions
More file actions
Latest commit
History
History
History
93 lines (80 loc) · 1.92 KB
Breadcrumbs
poco
/
JSON
/
src
/
Stringifier.cpp
Copy path
File metadata and controls
93 lines (80 loc) · 1.92 KB
Raw
Copy raw file
Download raw file
Open symbols panel
Edit and raw actions
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
//
//
Stringifier.cpp
//
//
$Id$
//
//
Library: JSON
//
Package: JSON
//
Module: Stringifier
//
//
Copyright (c) 2012, Applied Informatics Software Engineering GmbH.
//
and Contributors.
//
//
SPDX-License-Identifier: BSL-1.0
//
#
include
"
Poco/JSON/Stringifier.h
"
#
include
"
Poco/JSON/Array.h
"
#
include
"
Poco/JSON/Object.h
"
#
include
<
iomanip
>
using
Poco::Dynamic::Var;
namespace
Poco
{
namespace
JSON
{
void
Stringifier::stringify
(
const
Var& any, std::ostream& out,
unsigned
int
indent,
int
step,
bool
preserveInsertionOrder)
{
if
(step == -
1
) step = indent;
if
( any.
type
() ==
typeid
(Object) )
{
const
Object& o = any.
extract
<Object>();
o.
stringify
(out, indent ==
0
?
0
: indent, step);
}
else
if
( any.
type
() ==
typeid
(Array) )
{
const
Array& a = any.
extract
<Array>();
a.
stringify
(out, indent ==
0
?
0
: indent, step);
}
else
if
( any.
type
() ==
typeid
(Object::Ptr) )
{
const
Object::Ptr& o = any.
extract
<Object::Ptr>();
o->
stringify
(out, indent ==
0
?
0
: indent, step);
}
else
if
( any.
type
() ==
typeid
(Array::Ptr) )
{
const
Array::Ptr& a = any.
extract
<Array::Ptr>();
a->
stringify
(out, indent ==
0
?
0
: indent, step);
}
else
if
( any.
isEmpty
() )
{
out <<
"
null
"
;
}
else
if
( any.
isNumeric
() || any.
isBoolean
() )
{
out << any.
convert
<std::string>();
}
else
{
std::string value = any.
convert
<std::string>();
formatString
(value, out);
}
}
void
Stringifier::formatString
(
const
std::string& value, std::ostream& out)
{
out <<
'
"
'
;
for
(std::string::const_iterator it = value.
begin
(),
end = value.
end
(); it != end; ++it)
{
switch
(*it)
{
case
'
\\
'
: out <<
"
\\\\
"
;
break
;
case
'
"
'
: out <<
"
\\\"
"
;
break
;
case
'
/
'
: out <<
"
\\
/
"
;
break
;
case
'
\b
'
: out <<
"
\\
b
"
;
break
;
case
'
\f
'
: out <<
"
\\
f
"
;
break
;
case
'
\n
'
: out <<
"
\\
n
"
;
break
;
case
'
\r
'
: out <<
"
\\
r
"
;
break
;
case
'
\t
'
: out <<
"
\\
t
"
;
break
;
default
: out << *it;
break
;
}
}
out <<
'
"
'
;
}
} }
//
Namespace Poco::JSON
Back
|
FazBrowse Home
|
New Git URL