Merge pull request #5644 from TeBoring/fix-4765
Convert integer to string if field is string field in json
This commit is contained in:
commit
74f667ddc2
@ -13,6 +13,8 @@ Required.Proto3.JsonInput.FloatFieldTooSmall
|
||||
Required.Proto3.JsonInput.DoubleFieldTooSmall
|
||||
Required.Proto3.JsonInput.Int32FieldNotInteger
|
||||
Required.Proto3.JsonInput.Int64FieldNotInteger
|
||||
Required.Proto3.JsonInput.RepeatedFieldWrongElementTypeExpectingStringsGotInt
|
||||
Required.Proto3.JsonInput.StringFieldNotAString
|
||||
Required.Proto3.JsonInput.Uint32FieldNotInteger
|
||||
Required.Proto3.JsonInput.Uint64FieldNotInteger
|
||||
Required.Proto3.JsonInput.Int32FieldLeadingSpace
|
||||
|
@ -832,6 +832,9 @@ class Message
|
||||
if (is_null($value)) {
|
||||
return $this->defaultValue($field);
|
||||
}
|
||||
if (is_numeric($value)) {
|
||||
return strval($value);
|
||||
}
|
||||
if (!is_string($value)) {
|
||||
throw new GPBDecodeException(
|
||||
"String field only accepts string value");
|
||||
|
@ -1148,4 +1148,14 @@ class EncodeDecodeTest extends TestBase
|
||||
$m->serializeToJsonString());
|
||||
}
|
||||
|
||||
public function testJsonDecodeNumericStringMapKey()
|
||||
{
|
||||
$m = new TestMessage();
|
||||
$m->getMapStringString()["1"] = "1";
|
||||
$data = $m->serializeToJsonString();
|
||||
$this->assertSame("{\"mapStringString\":{\"1\":\"1\"}}", $data);
|
||||
$n = new TestMessage();
|
||||
$n->mergeFromJsonString($data);
|
||||
}
|
||||
|
||||
}
|
||||
|
2
tests.sh
2
tests.sh
@ -482,7 +482,7 @@ build_php5.6_mac() {
|
||||
export PATH="$PHP_FOLDER/bin:$PATH"
|
||||
|
||||
# Install phpunit
|
||||
curl https://phar.phpunit.de/phpunit-5.6.10.phar -L -o phpunit.phar
|
||||
curl https://phar.phpunit.de/phpunit-5.6.8.phar -L -o phpunit.phar
|
||||
chmod +x phpunit.phar
|
||||
sudo mv phpunit.phar /usr/local/bin/phpunit
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user