function Message::fieldJsonByteSize
@ignore
1 call to Message::fieldJsonByteSize()
- Message::jsonByteSize in vendor/
google/ protobuf/ src/ Google/ Protobuf/ Internal/ Message.php - @ignore
File
-
vendor/
google/ protobuf/ src/ Google/ Protobuf/ Internal/ Message.php, line 1832
Class
- Message
- Parent class of all proto messages. Users should not instantiate this class or extend this class or its child classes by their own. See the comment of specific functions for more details.
Namespace
Google\Protobuf\InternalCode
private function fieldJsonByteSize($field) {
$size = 0;
if ($field->isMap()) {
$getter = $field->getGetter();
$values = $this->{$getter}();
$count = count($values);
if ($count !== 0) {
if (!GPBUtil::hasSpecialJsonMapping($this)) {
$size += 3;
// size for "\"\":".
$size += strlen($field->getJsonName());
// size for field name
}
$size += 2;
// size for "{}".
$size += $count - 1;
// size for commas
$getter = $field->getGetter();
$map_entry = $field->getMessageType();
$key_field = $map_entry->getFieldByNumber(1);
$value_field = $map_entry->getFieldByNumber(2);
switch ($key_field->getType()) {
case GPBType::STRING:
case GPBType::SFIXED64:
case GPBType::INT64:
case GPBType::SINT64:
case GPBType::FIXED64:
case GPBType::UINT64:
$additional_quote = false;
break;
default:
$additional_quote = true;
}
foreach ($values as $key => $value) {
if ($additional_quote) {
$size += 2;
// size for ""
}
$size += $this->fieldDataOnlyJsonByteSize($key_field, $key);
$size += $this->fieldDataOnlyJsonByteSize($value_field, $value);
$size += 1;
// size for :
}
}
}
elseif ($field->isRepeated()) {
$getter = $field->getGetter();
$values = $this->{$getter}();
$count = count($values);
if ($count !== 0) {
if (!GPBUtil::hasSpecialJsonMapping($this)) {
$size += 3;
// size for "\"\":".
$size += strlen($field->getJsonName());
// size for field name
}
$size += 2;
// size for "[]".
$size += $count - 1;
// size for commas
$getter = $field->getGetter();
foreach ($values as $value) {
$size += $this->fieldDataOnlyJsonByteSize($field, $value);
}
}
}
elseif ($this->existField($field) || GPBUtil::hasJsonValue($this)) {
if (!GPBUtil::hasSpecialJsonMapping($this)) {
$size += 3;
// size for "\"\":".
$size += strlen($field->getJsonName());
// size for field name
}
$getter = $field->getGetter();
$value = $this->{$getter}();
$size += $this->fieldDataOnlyJsonByteSize($field, $value);
}
return $size;
}