Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in / Register
Toggle navigation
P
protobuf
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Packages
Packages
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
submodule
protobuf
Commits
88a4884b
Unverified
Commit
88a4884b
authored
7 years ago
by
Feng Xiao
Committed by
GitHub
7 years ago
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #4345 from jskeet/list-json-null
Allow null value in JSON representation of ListValue
parents
d6a17aad
5140bae3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
37 additions
and
2 deletions
+37
-2
conformance_test.cc
conformance/conformance_test.cc
+18
-0
JsonParserTest.cs
csharp/src/Google.Protobuf.Test/JsonParserTest.cs
+16
-0
JsonParser.cs
csharp/src/Google.Protobuf/JsonParser.cs
+3
-2
No files found.
conformance/conformance_test.cc
View file @
88a4884b
...
...
@@ -2320,6 +2320,24 @@ bool ConformanceTestSuite::RunSuite(ConformanceTestRunner* runner,
}
}
)"
);
RunValidJsonTest
(
"ValueAcceptListWithNull"
,
REQUIRED
,
R"({"optionalValue": ["x", null, "y"]})"
,
R"(
optional_value: {
list_value: {
values: {
string_value: "x"
}
values: {
null_value: NULL_VALUE
}
values: {
string_value: "y"
}
}
}
)"
);
RunValidJsonTest
(
"ValueAcceptObject"
,
REQUIRED
,
R"({"optionalValue": {"value": 1}})"
,
...
...
This diff is collapsed.
Click to expand it.
csharp/src/Google.Protobuf.Test/JsonParserTest.cs
View file @
88a4884b
...
...
@@ -695,6 +695,22 @@ namespace Google.Protobuf
Assert
.
AreEqual
(
Value
.
ForList
(
Value
.
ForNumber
(
1
),
Value
.
ForString
(
"x"
)),
Value
.
Parser
.
ParseJson
(
"[1, \"x\"]"
));
}
[
Test
]
public
void
Value_List_WithNullElement
()
{
var
expected
=
Value
.
ForList
(
Value
.
ForString
(
"x"
),
Value
.
ForNull
(),
Value
.
ForString
(
"y"
));
var
actual
=
Value
.
Parser
.
ParseJson
(
"[\"x\", null, \"y\"]"
);
Assert
.
AreEqual
(
expected
,
actual
);
}
[
Test
]
public
void
StructValue_NullElement
()
{
var
expected
=
Value
.
ForStruct
(
new
Struct
{
Fields
=
{
{
"x"
,
Value
.
ForNull
()
}
}
});
var
actual
=
Value
.
Parser
.
ParseJson
(
"{ \"x\": null }"
);
Assert
.
AreEqual
(
expected
,
actual
);
}
[
Test
]
public
void
ParseListValue
()
{
...
...
This diff is collapsed.
Click to expand it.
csharp/src/Google.Protobuf/JsonParser.cs
View file @
88a4884b
...
...
@@ -264,11 +264,12 @@ namespace Google.Protobuf
return
;
}
tokenizer
.
PushBack
(
token
);
if
(
token
.
Type
==
JsonToken
.
TokenType
.
Null
)
object
value
=
ParseSingleValue
(
field
,
tokenizer
);
if
(
value
==
null
)
{
throw
new
InvalidProtocolBufferException
(
"Repeated field elements cannot be null"
);
}
list
.
Add
(
ParseSingleValue
(
field
,
tokenizer
)
);
list
.
Add
(
value
);
}
}
...
...
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