Index
Any
(Meldung)Api
(Meldung)BoolValue
(Meldung)BytesValue
(Meldung)DoubleValue
(Meldung)Duration
(Meldung)Empty
(Meldung)Enum
(Meldung)EnumValue
(Meldung)Field
(Meldung)Field.Cardinality
(enum)Field.Kind
(enum)FieldMask
(Meldung)FloatValue
(Meldung)Int32Value
(Meldung)Int64Value
(Meldung)ListValue
(Meldung)Method
(Meldung)Mixin
(Meldung)NullValue
(Aufzählung)Option
(Meldung)SourceContext
(Meldung)StringValue
(Meldung)Struct
(Meldung)Syntax
(Aufzählung)Timestamp
(Meldung)Type
(Meldung)UInt32Value
(Meldung)UInt64Value
(Meldung)Value
(Meldung)
Alle
Any
enthält eine beliebige serialisierte Nachricht sowie eine URL, die den Typ der serialisierten Nachricht beschreibt.
JSON
Die JSON-Darstellung eines Any
-Werts verwendet die reguläre Darstellung der deserialisierten, eingebetteten Nachricht, mit einem zusätzlichen Feld @type
, das den Typ "URL" enthält. Beispiel:
package google.profile;
message Person {
string first_name = 1;
string last_name = 2;
}
{
"@type": "type.googleapis.com/google.profile.Person",
"firstName": <string>,
"lastName": <string>
}
Wenn der eingebettete Nachrichtentyp bekannt ist und eine benutzerdefinierte JSON-Darstellung hat, wird diese Darstellung eingebettet und fügt das Feld value
hinzu, das zusätzlich zum Feld @type
die benutzerdefinierte JSON enthält. Beispiel (für Nachricht google.protobuf.Duration
):
{
"@type": "type.googleapis.com/google.protobuf.Duration",
"value": "1.212s"
}
Feldname | Typ | Beschreibung |
---|---|---|
type_url |
string |
Ein URL-/Ressourcenname, dessen Inhalt den Typ der serialisierten Nachricht beschreibt. Für URLs, die das Schema
Andere Schemas als |
value |
bytes |
Muss gültige serialisierte Daten des oben angegebenen Typs sein. |
Api
API ist ein einfacher Deskriptor für einen Protokollpufferdienst.
Feldname | Typ | Beschreibung |
---|---|---|
name |
string |
Der voll qualifizierte Name dieser API, einschließlich des Paketnamens, gefolgt vom einfachen Namen der API. |
methods |
|
Die Methoden dieser API in nicht spezifizierter Reihenfolge. |
options |
|
Alle Metadaten, die an die API angehängt sind. |
version |
string |
Ein Versionsstring für diese API. Wenn dieses Flag angegeben ist, muss es das Format Das Versionierungsschema verwendet eine semantische Versionierung, bei der die Hauptversionsnummer eine nicht abwärtskompatible Änderung und die Nebenversion eine additive, abwärtskompatible Änderung angibt. Beide Versionsnummern signalisieren dem Nutzer, was er von verschiedenen Versionen erwarten kann. Sie sollten sorgfältig anhand des Produktplans ausgewählt werden. Die Hauptversion spiegelt sich auch im Paketnamen der API wider, der wie in |
source_context |
|
Quellkontext für den Protokollpuffer-Dienst, der durch diese Nachricht dargestellt wird. |
mixins |
|
Enthaltene APIs. Weitere Informationen finden Sie in den Mixin . |
syntax |
|
Die Quellsyntax des Dienstes. |
BoolValue
Wrapper-Nachricht für bool
.
Die JSON-Darstellung für BoolValue
ist JSON true
und false
.
Feldname | Typ | Beschreibung |
---|---|---|
value |
bool |
Der boolesche Wert. |
BytesValue
Wrapper-Nachricht für bytes
.
Die JSON-Darstellung für BytesValue
ist ein JSON-String.
Feldname | Typ | Beschreibung |
---|---|---|
value |
bytes |
Bytewert. |
DoubleValue
Wrapper-Nachricht für double
.
Die JSON-Darstellung für DoubleValue
ist die JSON-Nummer.
Feldname | Typ | Beschreibung |
---|---|---|
value |
double |
Der Double-Wert. |
Dauer
Die Dauer wird für eine vorzeichenbehaftete Zeitspanne von fester Länge in Sekunden und Sekundenbruchteilen bei Nanosekunden-Auflösung angegeben. Er ist unabhängig von Kalendern und Konzepten wie „Tag“ oder „Monat“. Sie ist mit dem Zeitstempel vergleichbar, da die Differenz zwischen zwei Zeitstempelwerten eine Dauer ist und von einem Zeitstempel addiert oder abgezogen werden kann. Die Reichweite beträgt ungefähr +-10.000 Jahre.
Beispiel 1: Rechendauer aus zwei Zeitstempeln in Pseudocode berechnen.
Timestamp start = ...;
Timestamp end = ...;
Duration duration = ...;
duration.seconds = end.seconds - start.seconds;
duration.nanos = end.nanos - start.nanos;
if (duration.seconds < 0 && duration.nanos > 0) {
duration.seconds += 1;
duration.nanos -= 1000000000;
} else if (duration.seconds > 0 && duration.nanos < 0) {
duration.seconds -= 1;
duration.nanos += 1000000000;
}
Beispiel 2: Zeitstempel aus Zeitstempel + Dauer in Pseudocode berechnen.
Timestamp start = ...;
Duration duration = ...;
Timestamp end = ...;
end.seconds = start.seconds + duration.seconds;
end.nanos = start.nanos + duration.nanos;
if (end.nanos < 0) {
end.seconds -= 1;
end.nanos += 1000000000;
} else if (end.nanos >= 1000000000) {
end.seconds += 1;
end.nanos -= 1000000000;
}
Die JSON-Darstellung für Duration
ist ein String
, der auf s
endet und für die Sekunden (Sekunden) steht, wobei Nanosekunden Sekundenbruchteile sind.
Feldname | Typ | Beschreibung |
---|---|---|
seconds |
int64 |
Signierte Sekunden der Zeitspanne. Muss zwischen -315.576.000.000 und +315.576.000.000 liegen. |
nanos |
int32 |
Signierte Bruchteile einer Sekunde bei Nanosekunden-Auflösung der Zeitspanne. Eine Dauer von weniger als einer Sekunde wird durch das Feld seconds und durch das Feld nanos dargestellt. Für eine Dauer von mindestens einer Sekunde muss ein Wert ungleich null für das Feld nanos dasselbe Vorzeichen wie das Feld seconds haben. Muss zwischen -999.999.999 und +999.999.999 liegen. |
Leer
Eine allgemeine leere Nachricht, die Sie wiederverwenden können, um die Definition doppelter leerer Nachrichten in Ihren APIs zu vermeiden. Ein typisches Beispiel hierfür ist die Verwendung als Anfrage oder Antworttyp einer API-Methode. Beispiele:
service Foo {
rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty);
}
Die JSON-Darstellung für Empty
ist ein leeres JSON-Objekt {}
.
Enum
Enum-Typdefinition.
Feldname | Typ | Beschreibung |
---|---|---|
name |
string |
Name des Enum-Typs. |
enumvalue |
|
Enum-Wertdefinitionen. |
options |
|
Protokollzwischenspeicher-Optionen. |
source_context |
|
Der Quellkontext. |
syntax |
|
Die Quellsyntax. |
EnumValue
Enum-Wertdefinition.
Feldname | Typ | Beschreibung |
---|---|---|
name |
string |
Enum-Wertname. |
number |
int32 |
Aufzählungswert. |
options |
|
Protokollzwischenspeicher-Optionen. |
Feld
Ein einzelnes Feld eines Nachrichtentyps.
Feldname | Typ | Beschreibung |
---|---|---|
kind |
|
Der Feldtyp. |
cardinality |
|
Die Kardinalität des Felds. |
number |
int32 |
Die Feldnummer. |
name |
string |
Der Feldname. |
type_url |
string |
Die Feldtyp-URL ohne Schema für Nachrichten- oder Aufzählungstypen. Beispiel: "type.googleapis.com/google.protobuf.Timestamp" . |
oneof_index |
int32 |
Der Index des Feldtyps in Type.oneofs für Nachrichten- oder Aufzählungstypen. Der erste Typ hat Index 1. Null bedeutet, dass der Typ nicht in der Liste enthalten ist. |
packed |
bool |
Gibt an, ob eine alternative verpackte Kabeldarstellung verwendet werden soll. |
options |
|
Die Protokollpufferoptionen. |
json_name |
string |
Der JSON-Name des Felds. |
default_value |
string |
Der Stringwert des Standardwerts dieses Felds. Nur Proto2-Syntax. |
Cardinality
Gibt an, ob ein Feld optional, erforderlich oder wiederholt ist.
Enum-Wert | Beschreibung |
---|---|
CARDINALITY_UNKNOWN |
Für Felder mit unbekannter Kardinalität. |
CARDINALITY_OPTIONAL |
Für optionale Felder. |
CARDINALITY_REQUIRED |
Für Pflichtfelder Nur Proto2-Syntax. |
CARDINALITY_REPEATED |
Für wiederkehrende Felder. |
Art
Grundlegende Feldtypen.
Enum-Wert | Beschreibung |
---|---|
TYPE_UNKNOWN |
Feldtyp unbekannt. |
TYPE_DOUBLE |
Feldtyp „Double“. |
TYPE_FLOAT |
Feldtyp: Gleitkommazahl |
TYPE_INT64 |
Feldtyp: int64. |
TYPE_UINT64 |
Feldtyp „uint64“. |
TYPE_INT32 |
Feldtyp int32: |
TYPE_FIXED64 |
Feldtyp fest64. |
TYPE_FIXED32 |
Feldtyp fest32. |
TYPE_BOOL |
Feldtyp: Boolescher Wert |
TYPE_STRING |
Feldtypstring. |
TYPE_GROUP |
Feldtypgruppe. Nur Proto2-Syntax und verworfen. |
TYPE_MESSAGE |
Feldtypnachricht. |
TYPE_BYTES |
Feldtyp in Byte. |
TYPE_UINT32 |
Feldtyp „uint32“. |
TYPE_ENUM |
Feldtyp „enum“. |
TYPE_SFIXED32 |
Feldtyp „sfixed32“. |
TYPE_SFIXED64 |
Feldtyp „sfixed64“. |
TYPE_SINT32 |
Feldtyp „sint32“. |
TYPE_SINT64 |
Feldtyp „sint64“. |
FieldMask
FieldMask
steht für eine Reihe symbolischer Feldpfade. Beispiel:
paths: "f.a"
paths: "f.b.d"
Hier stellt f
ein Feld in einigen Stammnachrichten, a
- und b
-Felder in der Nachricht in f
und d
ein Feld in der Nachricht in f.b
dar.
Feldmasken werden verwendet, um eine Teilmenge von Feldern anzugeben, die von einem Get-Vorgang (einer Projektion) oder durch einen Aktualisierungsvorgang zurückgegeben werden sollen. Feldmasken haben auch eine benutzerdefinierte JSON-Codierung (siehe unten).
Feldmasken in Projektionen
Wenn ein FieldMask
eine Projektion angibt, filtert die API die Antwortnachricht (oder Unternachricht) so, dass sie nur die in der Maske angegebenen Felder enthält. Sehen Sie sich zum Beispiel die Antwort „Vormaskierung“ an:
f {
a : 22
b {
d : 1
x : 2
}
y : 13
}
z: 8
Nachdem die Maske im vorherigen Beispiel angewendet wurde, enthält die API-Antwort keine spezifischen Werte für die Felder x, y oder z (der Wert wird auf die Standardeinstellung gesetzt und in der .proto-Textausgabe weggelassen):
f {
a : 22
b {
d : 1
}
}
Ein wiederkehrendes Feld ist nicht zulässig, außer an der letzten Position einer Feldmaske.
Wenn in einem get-Vorgang kein FieldMask-Objekt vorhanden ist, wird der Vorgang auf alle Felder angewendet (als wäre ein Feld mit allen Feldern angegeben worden).
Eine Feldmaske gilt nicht unbedingt für die Antwortnachricht auf oberster Ebene. Bei einem REST-Vorgang mit REST wird die Feldmaske direkt auf die Antwort angewendet. Bei einem REST-Listenvorgang gilt die Maske stattdessen für jede einzelne Nachricht in der Liste der zurückgegebenen Ressourcen. Bei einer benutzerdefinierten REST-Methode können andere Definitionen verwendet werden. Wo die Maske angewendet wird, wird zusammen mit ihrer Erklärung in der API klar dokumentiert. Die Auswirkungen auf die zurückgegebenen Ressourcen/Ressourcen sind in jedem Fall für APIs erforderlich.
Feldmasken in Aktualisierungsvorgängen
Eine Feldmaske in Aktualisierungsvorgängen gibt an, welche Felder der Zielressource aktualisiert werden. Die API muss nur die Werte der Felder ändern, wie in der Maske angegeben. Die anderen Felder bleiben unverändert. Wenn eine Ressource zur Beschreibung der aktualisierten Werte übergeben wird, ignoriert die API die Werte aller Felder, die nicht von der Maske abgedeckt werden.
Damit der Wert eines Felds auf den Standardwert zurückgesetzt wird, muss sich das Feld in der Maske befinden und auf den Standardwert in der angegebenen Ressource festgelegt sein. Wenn Sie also alle Felder einer Ressource zurücksetzen möchten, geben Sie eine Standardinstanz der Ressource an und legen Sie alle Felder in der Maske fest oder geben Sie keine Maske an, wie unten beschrieben.
Wenn bei der Aktualisierung keine Feldmaske vorhanden ist, wird der Vorgang auf alle Felder angewendet (als wäre eine Feldmaske aller Felder angegeben). Bei Schemaentwicklung kann dies bedeuten, dass Felder, die dem Client nicht bekannt sind und daher nicht in die Anfrage aufgenommen wurden, auf die Standardwerte zurückgesetzt werden. Wenn dies ein unerwünschtes Verhalten ist, verlangt ein bestimmter Dienst, dass ein Client immer eine Feldmaske angeben muss. Andernfalls wird ein Fehler ausgegeben.
Wie bei „get“-Vorgängen hängt der Standort der Ressource, die die aktualisierten Werte in der Anfragenachricht beschreibt, vom Vorgangstyp ab. In jedem Fall müssen die Auswirkungen der Feldmaske von der API berücksichtigt werden.
Hinweise zu HTTP REST
Der HTTP-Typ eines Aktualisierungsvorgangs, bei dem eine Feldmaske verwendet wird, muss auf PATCH anstelle von PUT festgelegt werden, um die HTTP-Semantik zu erfüllen (PUT muss nur für vollständige Updates verwendet werden).
JSON-Codierung von Feldmasken
In JSON wird eine Feldmaske als einzelner String codiert, wobei die Pfade durch ein Komma getrennt sind. Die Namen der Felder in den Pfaden werden in Namenskonventionen mit niedrigerer Kamelform geändert.
Hier ein Beispiel:
message Profile {
User user = 1;
Photo photo = 2;
}
message User {
string display_name = 1;
string address = 2;
}
In Proto kann eine Feldmaske für Profile
so aussehen:
mask {
paths: "user.display_name"
paths: "photo"
}
In JSON wird dieselbe Maske so dargestellt:
{
mask: "user.displayName,photo"
}
Feldname | Typ | Beschreibung |
---|---|---|
paths |
string |
Die Reihe der Feldmaskenpfade. |
FloatValue
Wrapper-Nachricht für float
.
Die JSON-Darstellung für FloatValue
ist die JSON-Nummer.
Feldname | Typ | Beschreibung |
---|---|---|
value |
float |
Der Gleitkommawert. |
Int32Value
Wrapper-Nachricht für int32
.
Die JSON-Darstellung für Int32Value
ist die JSON-Nummer.
Feldname | Typ | Beschreibung |
---|---|---|
value |
int32 |
Der int32-Wert. |
Int64Value
Wrapper-Nachricht für int64
.
Die JSON-Darstellung für Int64Value
ist ein JSON-String.
Feldname | Typ | Beschreibung |
---|---|---|
value |
int64 |
Der int64-Wert. |
ListValue
ListValue
ist ein Wrapper um ein wiederkehrendes Wertefeld.
Die JSON-Darstellung für ListValue
ist ein JSON-Array.
Feldname | Typ | Beschreibung |
---|---|---|
values |
|
Wiederkehrendes Feld mit dynamisch typisierten Werten. |
Methode
Die Methode stellt eine Methode einer API dar.
Feldname | Typ | Beschreibung |
---|---|---|
name |
string |
Der einfache Name dieser Methode. |
request_type_url |
string |
Die URL des Eingabe-Nachrichtentyps. |
request_streaming |
bool |
Wenn dies der Fall ist, wird die Anfrage gestreamt. |
response_type_url |
string |
Die URL des Ausgabe-Nachrichtentyps. |
response_streaming |
bool |
Wenn dies der Fall ist, wird die Antwort gestreamt. |
options |
|
Alle Metadaten, die der Methode zugeordnet sind. |
syntax |
|
Die Quellsyntax dieser Methode. |
Mixin
Deklariert eine API, die in dieser API enthalten sein soll. Die Include API muss alle Methoden der enthaltenen API neu deklarieren. Dokumentation und Optionen werden jedoch wie folgt übernommen:
Wenn nach dem Entfernen eines Kommentars oder Whitespace der Dokumentationsstring der redeclared-Methode leer ist, wird sie von der ursprünglichen Methode übernommen.
Jede Annotation, die zur Dienstkonfiguration (http, Sichtbarkeit) gehört und nicht in der redeclared-Methode definiert ist, wird übernommen.
Wenn eine http-Annotation übernommen wird, wird das Pfadmuster wie folgt geändert. Jedes Versionspräfix wird durch die Version der Include API sowie den Pfad
root
ersetzt, falls angegeben.
Beispiel für ein einfaches Mixin:
package google.acl.v1;
service AccessControl {
// Get the underlying ACL object.
rpc GetAcl(GetAclRequest) returns (Acl) {
option (google.api.http).get = "/v1/{resource=**}:getAcl";
}
}
package google.storage.v2;
service Storage {
// rpc GetAcl(GetAclRequest) returns (Acl);
// Get a data record.
rpc GetData(GetDataRequest) returns (Data) {
option (google.api.http).get = "/v2/{resource=**}";
}
}
Beispiel für eine Mixin-Konfiguration:
apis:
- name: google.storage.v2.Storage
mixins:
- name: google.acl.v1.AccessControl
Das Mixin-Konstrukt impliziert, dass alle Methoden in AccessControl
auch in Storage
mit demselben Namen und denselben Anfrage-/Antworttypen deklariert sind. Ein Dokumentationsgenerator oder ein Annotationsprozessor erkennt die effektive Methode Storage.GetAcl
, nachdem er Dokumentation und Annotationen wie folgt übernommen hat:
service Storage {
// Get the underlying ACL object.
rpc GetAcl(GetAclRequest) returns (Acl) {
option (google.api.http).get = "/v2/{resource=**}:getAcl";
}
...
}
Beachten Sie, wie sich die Version im Pfadmuster von v1
in v2
geändert hat.
Wenn das Feld root
im Mixin angegeben wird, sollte es ein relativer Pfad sein, unter dem übernommene HTTP-Pfade platziert werden. Beispiel:
apis:
- name: google.storage.v2.Storage
mixins:
- name: google.acl.v1.AccessControl
root: acls
Dies impliziert die folgende übernommene HTTP-Annotation:
service Storage {
// Get the underlying ACL object.
rpc GetAcl(GetAclRequest) returns (Acl) {
option (google.api.http).get = "/v2/acls/{resource=**}:getAcl";
}
...
}
Feldname | Typ | Beschreibung |
---|---|---|
name |
string |
Der voll qualifizierte Name der enthaltenen API. |
root |
string |
Wenn nicht leer, wird ein Pfad angegeben, unter dem übernommene HTTP-Pfade gerootet werden. |
NullValue
NullValue
ist eine Singleton-Aufzählung zur Darstellung des Nullwerts für den Union-Typ Value
.
Die JSON-Darstellung für NullValue
ist JSON null
.
Enum-Wert | Beschreibung |
---|---|
NULL_VALUE |
Nullwert. |
Option
Eine Protokollpuffer-Option, die einer Nachricht, einem Feld, einer Aufzählung usw. zugeordnet werden kann.
Feldname | Typ | Beschreibung |
---|---|---|
name |
string |
Der Name der Option. Beispiel: "java_package" . |
value |
|
Der Wert der Option. Beispiel: "com.google.protobuf" . |
SourceContext
SourceContext
stellt Informationen zur Quelle eines Protobuf-Elements dar, z. B. die Datei, in der es definiert ist.
Feldname | Typ | Beschreibung |
---|---|---|
file_name |
string |
Der pfadqualifizierte Name der Datei .proto, die das zugehörige protobuf-Element enthielt. Beispiel: "google/protobuf/source.proto" . |
StringValue
Wrapper-Nachricht für string
.
Die JSON-Darstellung für StringValue
ist ein JSON-String.
Feldname | Typ | Beschreibung |
---|---|---|
value |
string |
Stringwert. |
Struct
Struct
steht für einen strukturierten Datenwert, der aus Feldern besteht, die dynamisch typisierten Werten zugeordnet sind. In einigen Sprachen wird Struct
möglicherweise von einer nativen Darstellung unterstützt. In Skriptsprachen wie JS wird eine Struktur beispielsweise als Objekt dargestellt. Die Details dieser Darstellung werden zusammen mit dem Proto-Support für die Sprache beschrieben.
Die JSON-Darstellung für Struct
ist ein JSON-Objekt.
Feldname | Typ | Beschreibung |
---|---|---|
fields |
map<string, |
Zuordnung dynamisch eingegebener Werte |
Syntax
Die Syntax, in der ein Protokollzwischenspeicher-Element definiert ist.
Enum-Wert | Beschreibung |
---|---|
SYNTAX_PROTO2 |
Syntax proto2 . |
SYNTAX_PROTO3 |
Syntax proto3 . |
Zeitstempel
Ein Zeitstempel stellt einen von jeder Zeitzone oder jedem Kalender unabhängigen Zeitpunkt dar, dargestellt als Sekunden und Sekundenbruchteile mit Nanosekunden-Auflösung in UTC-Epochenzeit. Er wird mit Hilfe des Proleptisch Gregorianischen Kalenders kodiert, der den Gregorianischen Kalender rückwärts bis ins erste Jahr verlängert. Er wird unter der Annahme kodiert, dass alle Minuten 60 Sekunden lang sind, d. h. Schaltsekunden werden "verschmiert", so dass keine Schaltsekunden-Tabelle zur Deutung benötigt wird. Der Bereich reicht von 0001-01-01T00:00:00Z bis 9999-12-31T23:59:59.999999999Z. Durch die Beschränkung auf diesen Bereich stellen wir sicher, dass wir in und von RFC 3339-Datumsstrings konvertieren können. Weitere Informationen unter https://www.ietf.org/rfc/rfc3339.txt.
Beispiel 1: Zeitstempel aus POSIX time()
berechnen.
Timestamp timestamp;
timestamp.set_seconds(time(NULL));
timestamp.set_nanos(0);
Beispiel 2: Zeitstempel aus POSIX gettimeofday()
berechnen.
struct timeval tv;
gettimeofday(&tv, NULL);
Timestamp timestamp;
timestamp.set_seconds(tv.tv_sec);
timestamp.set_nanos(tv.tv_usec * 1000);
Beispiel 3: Zeitstempel aus Win32 GetSystemTimeAsFileTime()
berechnen.
FILETIME ft;
GetSystemTimeAsFileTime(&ft);
UINT64 ticks = (((UINT64)ft.dwHighDateTime) << 32) | ft.dwLowDateTime;
// A Windows tick is 100 nanoseconds. Windows epoch 1601-01-01T00:00:00Z
// is 11644473600 seconds before Unix epoch 1970-01-01T00:00:00Z.
Timestamp timestamp;
timestamp.set_seconds((INT64) ((ticks / 10000000) - 11644473600LL));
timestamp.set_nanos((INT32) ((ticks % 10000000) * 100));
Beispiel 4: Zeitstempel aus Java System.currentTimeMillis()
berechnen.
long millis = System.currentTimeMillis();
Timestamp timestamp = Timestamp.newBuilder().setSeconds(millis / 1000)
.setNanos((int) ((millis % 1000) * 1000000)).build();
Beispiel 5: Zeitstempel aus der aktuellen Zeit in Python berechnen.
now = time.time()
seconds = int(now)
nanos = int((now - seconds) * 10**9)
timestamp = Timestamp(seconds=seconds, nanos=nanos)
Feldname | Typ | Beschreibung |
---|---|---|
seconds |
int64 |
Stellt Sekunden der UTC-Zeit seit Unix-Epoche 1970-01-01T00:00:00Z dar. Der Wert muss zwischen einschließlich 0001-01-01T00:00:00Z und 9999-12-31T23:59:59Z liegen. |
nanos |
int32 |
Nicht negative Sekundenbruchteile Nanosekunden-Auflösung. Negative Sekundenwerte mit Bruchteilen müssen weiterhin nicht negative Nano-Werte haben, die zeitlich vorwärts gezählt werden. Der Wert muss einschließlich zwischen 0 und 999.999.999 liegen. |
Typ
Ein Protokollpuffer-Nachrichtentyp.
Feldname | Typ | Beschreibung |
---|---|---|
name |
string |
Der voll qualifizierte Nachrichtenname. |
fields |
|
Die Liste der Felder. |
oneofs |
string |
Die Liste der Typen, die in oneof -Definitionen dieses Typs enthalten sind. |
options |
|
Die Protokollpufferoptionen. |
source_context |
|
Der Quellkontext. |
syntax |
|
Die Quellsyntax. |
UInt32Value
Wrapper-Nachricht für uint32
.
Die JSON-Darstellung für UInt32Value
ist die JSON-Nummer.
Feldname | Typ | Beschreibung |
---|---|---|
value |
uint32 |
Der Wert uint32. |
UInt64Value
Wrapper-Nachricht für uint64
.
Die JSON-Darstellung für UInt64Value
ist ein JSON-String.
Feldname | Typ | Beschreibung |
---|---|---|
value |
uint64 |
Der Wert von uint64. |
Wert
Value
steht für einen dynamisch typisierten Wert, der entweder null, eine Zahl, ein String, ein boolescher Wert, ein rekursiver Strukturwert oder eine Liste von Werten sein kann. Es wird erwartet, dass von einem Ersteller von Werten eine dieser Varianten festgelegt wird. Wenn keine Variante vorhanden ist, weist dies auf einen Fehler hin.
Die JSON-Darstellung für Value
ist der JSON-Wert.
Feldname | Typ | Beschreibung |
---|---|---|
Union-Feld, nur eines der folgenden: | ||
null_value |
|
Ein Nullwert |
number_value |
double |
Ein doppelter Wert Beachten Sie, dass der Versuch, NaN oder Infinity zu serialisiert, zu einem Fehler führt. Diese können nicht als String-Werte wie "NaN" oder "Infinity" serialisiert werden. |
string_value |
string |
Stellt einen Stringwert dar. |
bool_value |
bool |
Stellt einen booleschen Wert dar. |
struct_value |
|
Ein strukturierter Wert |
list_value |
|
Ein wiederkehrendes Value -Objekt |