HINWEIS: Diese Website wurde eingestellt. Die Website wird nach dem 31. Januar 2023 eingestellt. Der Traffic wird auf die neue Website unter https://Protop.dev weitergeleitet. In der Zwischenzeit werden nur Änderungen an aufgeführt.

Package google.protobuf

Mit Sammlungen den Überblick behalten Sie können Inhalte basierend auf Ihren Einstellungen speichern und kategorisieren.

Index

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 http, https oder kein Schema verwenden, gelten die folgenden Einschränkungen und Interpretationen:

  • Wenn kein Schema angegeben ist, wird https angenommen.
  • Das letzte Segment des URL-Pfads muss den voll qualifizierten Namen des Typs enthalten (wie in path/google.protobuf.Duration).
  • Ein HTTP GET-Wert für die URL muss einen google.protobuf.Type-Wert im Binärformat ergeben oder einen Fehler erzeugen.
  • Anwendungen dürfen Suchergebnisse basierend auf der URL im Cache speichern oder in einer Binärdatei vorkompilieren, um eine Suche zu vermeiden. Daher muss die Binärkompatibilität bei Änderungen an Typen beibehalten werden. (Verwenden Sie Versionsnamen, um nicht abwärtskompatible Änderungen zu verwalten.)

Andere Schemas als http, https (oder das leere Schema) können mit der Implementierungssemantik verwendet werden.

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 Method Die Methoden dieser API in nicht spezifizierter Reihenfolge.
options Option 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 major-version.minor-version haben, wie in 1.10. Wenn die Nebenversion nicht angegeben wird, wird standardmäßig Null verwendet. Wenn das gesamte Versionsfeld leer ist, wird die Hauptversion vom Paketnamen wie unten beschrieben abgeleitet. Wenn das Feld nicht leer ist, wird die Version im Paketnamen verifiziert und stimmt mit dem überein, was hier angegeben wird.

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 google.feature.v1 auf v<major-version> enden muss. Für die Hauptversionen 0 und 1 kann das Suffix weggelassen werden. Null-Hauptversionen dürfen nur für experimentelle Nicht-GA-APIs verwendet werden.

source_context SourceContext Quellkontext für den Protokollpuffer-Dienst, der durch diese Nachricht dargestellt wird.
mixins Mixin Enthaltene APIs. Weitere Informationen finden Sie in den Mixin.
syntax 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 EnumValue Enum-Wertdefinitionen.
options Option Protokollzwischenspeicher-Optionen.
source_context SourceContext Der Quellkontext.
syntax Syntax Die Quellsyntax.

EnumValue

Enum-Wertdefinition.

Feldname Typ Beschreibung
name string Enum-Wertname.
number int32 Aufzählungswert.
options Option Protokollzwischenspeicher-Optionen.

Feld

Ein einzelnes Feld eines Nachrichtentyps.

Feldname Typ Beschreibung
kind Kind Der Feldtyp.
cardinality 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 Option 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 Value 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 Option Alle Metadaten, die der Methode zugeordnet sind.
syntax 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 Any 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, Value> 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 Field Die Liste der Felder.
oneofs string Die Liste der Typen, die in oneof-Definitionen dieses Typs enthalten sind.
options Option Die Protokollpufferoptionen.
source_context SourceContext Der Quellkontext.
syntax 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 NullValue 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 Struct Ein strukturierter Wert
list_value ListValue Ein wiederkehrendes Value-Objekt