Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
J
json
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Libraries
json
Commits
c24218af
Unverified
Commit
c24218af
authored
4 years ago
by
Niels Lohmann
Browse files
Options
Browse Files
Download
Plain Diff
Merge remote-tracking branch 'origin/develop' into develop
parents
23c8ab95
2c4be7d6
Changes
4
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
71 additions
and
24 deletions
+71
-24
README.md
README.md
+22
-22
include/nlohmann/detail/input/json_sax.hpp
include/nlohmann/detail/input/json_sax.hpp
+1
-1
single_include/nlohmann/json.hpp
single_include/nlohmann/json.hpp
+1
-1
test/src/unit-class_parser.cpp
test/src/unit-class_parser.cpp
+47
-0
No files found.
README.md
View file @
c24218af
This diff is collapsed.
Click to expand it.
include/nlohmann/detail/input/json_sax.hpp
View file @
c24218af
...
@@ -452,7 +452,7 @@ class json_sax_dom_callback_parser
...
@@ -452,7 +452,7 @@ class json_sax_dom_callback_parser
ref_stack
.
pop_back
();
ref_stack
.
pop_back
();
keep_stack
.
pop_back
();
keep_stack
.
pop_back
();
if
(
not
ref_stack
.
empty
()
and
ref_stack
.
back
()
and
ref_stack
.
back
()
->
is_
object
())
if
(
not
ref_stack
.
empty
()
and
ref_stack
.
back
()
and
ref_stack
.
back
()
->
is_
structured
())
{
{
// remove discarded value
// remove discarded value
for
(
auto
it
=
ref_stack
.
back
()
->
begin
();
it
!=
ref_stack
.
back
()
->
end
();
++
it
)
for
(
auto
it
=
ref_stack
.
back
()
->
begin
();
it
!=
ref_stack
.
back
()
->
end
();
++
it
)
...
...
This diff is collapsed.
Click to expand it.
single_include/nlohmann/json.hpp
View file @
c24218af
...
@@ -5358,7 +5358,7 @@ class json_sax_dom_callback_parser
...
@@ -5358,7 +5358,7 @@ class json_sax_dom_callback_parser
ref_stack
.
pop_back
();
ref_stack
.
pop_back
();
keep_stack
.
pop_back
();
keep_stack
.
pop_back
();
if
(
not
ref_stack
.
empty
()
and
ref_stack
.
back
()
and
ref_stack
.
back
()
->
is_
object
())
if
(
not
ref_stack
.
empty
()
and
ref_stack
.
back
()
and
ref_stack
.
back
()
->
is_
structured
())
{
{
// remove discarded value
// remove discarded value
for
(
auto
it
=
ref_stack
.
back
()
->
begin
();
it
!=
ref_stack
.
back
()
->
end
();
++
it
)
for
(
auto
it
=
ref_stack
.
back
()
->
begin
();
it
!=
ref_stack
.
back
()
->
end
();
++
it
)
...
...
This diff is collapsed.
Click to expand it.
test/src/unit-class_parser.cpp
View file @
c24218af
...
@@ -1489,6 +1489,18 @@ TEST_CASE("parser class")
...
@@ -1489,6 +1489,18 @@ TEST_CASE("parser class")
[1,2,[3,4,5],4,5]
[1,2,[3,4,5],4,5]
)"
;
)"
;
auto
structured_array
=
R"(
[
1,
{
"foo": "bar"
},
{
"qux": "baz"
}
]
)"
;
SECTION
(
"filter nothing"
)
SECTION
(
"filter nothing"
)
{
{
json
j_object
=
json
::
parse
(
s_object
,
[](
int
,
json
::
parse_event_t
,
const
json
&
)
json
j_object
=
json
::
parse
(
s_object
,
[](
int
,
json
::
parse_event_t
,
const
json
&
)
...
@@ -1557,6 +1569,41 @@ TEST_CASE("parser class")
...
@@ -1557,6 +1569,41 @@ TEST_CASE("parser class")
CHECK
(
j_array
==
json
({
1
,
{
3
,
4
,
5
},
4
,
5
}));
CHECK
(
j_array
==
json
({
1
,
{
3
,
4
,
5
},
4
,
5
}));
}
}
SECTION
(
"filter object in array"
)
{
json
j_filtered1
=
json
::
parse
(
structured_array
,
[](
int
,
json
::
parse_event_t
e
,
const
json
&
parsed
)
{
if
(
e
==
json
::
parse_event_t
::
object_end
and
parsed
.
contains
(
"foo"
))
{
return
false
;
}
else
{
return
true
;
}
});
// the specified object will be discarded, and removed.
CHECK
(
j_filtered1
.
size
()
==
2
);
CHECK
(
j_filtered1
==
json
({
1
,
{{
"qux"
,
"baz"
}}}));
json
j_filtered2
=
json
::
parse
(
structured_array
,
[](
int
,
json
::
parse_event_t
e
,
const
json
&
parsed
)
{
if
(
e
==
json
::
parse_event_t
::
object_end
)
{
return
false
;
}
else
{
return
true
;
}
});
// removed all objects in array.
CHECK
(
j_filtered2
.
size
()
==
1
);
CHECK
(
j_filtered2
==
json
({
1
}));
}
SECTION
(
"filter specific events"
)
SECTION
(
"filter specific events"
)
{
{
SECTION
(
"first closing event"
)
SECTION
(
"first closing event"
)
...
...
This diff is collapsed.
Click to expand it.
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment