<?php require dirname(dirname(dirname(__FILE__))) . DIRECTORY_SEPARATOR . "contrib/php/addressbook.proto.php"; // example: ProtocolBuffers to Json format $person = new Tutorial_Person(); $person->setId(21); $person->setName("John Doe"); $descriptor = $person->getDescriptor(); $result = array(); foreach ($descriptor->getFields() as $field) { if (!$field->isExtension()) { if ($person->has($field->getName())) { // this does not care about Message. $value = $person->get($field->getName()); $result[$field->getName()] = $value; } } } echo json_encode($result, JSON_PRETTY_PRINT);