Merge pull request #5646 from TeBoring/3.7.x-cherrypick
Default values should also be serialized for json map key/value (#5643)
This commit is contained in:
commit
32339be92a
@ -23,7 +23,6 @@ Required.DurationProtoInputTooLarge.JsonOutput
|
||||
Required.DurationProtoInputTooSmall.JsonOutput
|
||||
Required.TimestampProtoInputTooLarge.JsonOutput
|
||||
Required.TimestampProtoInputTooSmall.JsonOutput
|
||||
Required.Proto3.JsonInput.BoolMapField.JsonOutput
|
||||
Required.Proto3.JsonInput.DoubleFieldMaxNegativeValue.JsonOutput
|
||||
Required.Proto3.JsonInput.DoubleFieldMaxNegativeValue.ProtobufOutput
|
||||
Required.Proto3.JsonInput.DoubleFieldMinPositiveValue.JsonOutput
|
||||
|
@ -1163,7 +1163,7 @@ static void put_optional_value(const void* memory, int len,
|
||||
#define T(upbtypeconst, upbtype, ctype, default_value) \
|
||||
case upbtypeconst: { \
|
||||
ctype value = DEREF(memory, 0, ctype); \
|
||||
if (value != default_value) { \
|
||||
if (is_json || value != default_value) { \
|
||||
upb_selector_t sel = getsel(f, upb_handlers_getprimitivehandlertype(f)); \
|
||||
upb_sink_put##upbtype(sink, sel, value); \
|
||||
} \
|
||||
@ -1181,8 +1181,7 @@ static void put_optional_value(const void* memory, int len,
|
||||
#undef T
|
||||
case UPB_TYPE_STRING:
|
||||
case UPB_TYPE_BYTES:
|
||||
putrawstr(memory, len, f, sink,
|
||||
is_json && is_wrapper_msg(upb_fielddef_containingtype(f)));
|
||||
putrawstr(memory, len, f, sink, is_json);
|
||||
break;
|
||||
case UPB_TYPE_MESSAGE: {
|
||||
#if PHP_MAJOR_VERSION < 7
|
||||
|
@ -1135,4 +1135,17 @@ class EncodeDecodeTest extends TestBase
|
||||
$this->assertEquals("", $m->serializeToString());
|
||||
}
|
||||
|
||||
public function testJsonDecodeMapWithDefaultValueKey()
|
||||
{
|
||||
$m = new TestMessage();
|
||||
$m->getMapInt32Int32()[0] = 0;
|
||||
$this->assertSame("{\"mapInt32Int32\":{\"0\":0}}",
|
||||
$m->serializeToJsonString());
|
||||
|
||||
$m = new TestMessage();
|
||||
$m->getMapStringString()[""] = "";
|
||||
$this->assertSame("{\"mapStringString\":{\"\":\"\"}}",
|
||||
$m->serializeToJsonString());
|
||||
}
|
||||
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user