Indeks
Any
(komunikat)Api
(komunikat)BoolValue
(komunikat)BytesValue
(komunikat)DoubleValue
(komunikat)Duration
(komunikat)Empty
(komunikat)Enum
(komunikat)EnumValue
(komunikat)Field
(komunikat)Field.Cardinality
(wyliczenie)Field.Kind
(wyliczenie)FieldMask
(komunikat)FloatValue
(komunikat)Int32Value
(komunikat)Int64Value
(komunikat)ListValue
(komunikat)Method
(komunikat)Mixin
(komunikat)NullValue
(wyliczenie)Option
(komunikat)SourceContext
(komunikat)StringValue
(komunikat)Struct
(komunikat)Syntax
(wyliczenie)Timestamp
(komunikat)Type
(komunikat)UInt32Value
(komunikat)UInt64Value
(komunikat)Value
(komunikat)
Dowolny
Any
zawiera dowolną zserializowaną wiadomość wraz z adresem URL opisującym typ zserializowanej wiadomości.
JSON
Format JSON wartości Any
korzysta ze zwykłej reprezentacji wiadomości umieszczonej na preferowanym miejscu i z dodatkowym polem @type
, które zawiera typ adresu URL. Przykład
package google.profile;
message Person {
string first_name = 1;
string last_name = 2;
}
{
"@type": "type.googleapis.com/google.profile.Person",
"firstName": <string>,
"lastName": <string>
}
Jeśli typ wiadomości umieszczonej jest dobrze znany i ma niestandardową reprezentację JSON, ta reprezentacja zostanie umieszczona wraz z polem value
, które oprócz pola @type
zawiera niestandardowy kod JSON. Przykład (wiadomość google.protobuf.Duration
):
{
"@type": "type.googleapis.com/google.protobuf.Duration",
"value": "1.212s"
}
Nazwa pola | Typ | Opis |
---|---|---|
type_url |
string |
Nazwa adresu URL lub zasobu, którego treść opisuje typ zserializowanej wiadomości. W przypadku adresów URL, które używają schematu
Schematy inne niż |
value |
bytes |
Muszą być prawidłowe zserializowane dane podanego powyżej typu. |
API
Api to lekki deskryptor usługi bufora protokołu.
Nazwa pola | Typ | Opis |
---|---|---|
name |
string |
Pełna nazwa tego API, w tym nazwa pakietu, po której następuje prosta nazwa interfejsu. |
methods |
|
Metody tego interfejsu API w nieokreślonej kolejności. |
options |
|
Wszelkie metadane dołączone do interfejsu API. |
version |
string |
Ciąg znaków wersji tego interfejsu API. Jeśli został podany, musi mieć format Schemat obsługi wersji korzysta z wersji semantycznej, w której numer wersji głównej oznacza zmianę powodującą niezgodność, a wersja podrzędna jest dodatkiem niewymagającym zmian. Oba numery wersji wskazują użytkownikom, czego mogą się spodziewać w różnych wersjach. Należy je uważnie wybierać na podstawie pakietu usług. Wersja główna jest też widoczna w nazwie pakietu interfejsu API, która musi się kończyć na |
source_context |
|
Kontekst źródłowy usługi bufora protokołu reprezentowanej przez tę wiadomość. |
mixins |
|
Dołączone interfejsy API. Zobacz Mixin . |
syntax |
|
Składnia źródła w usłudze. |
Wartość logiczna
Wiadomość opakowana dla: bool
.
Reprezentacja JSON dla BoolValue
to JSON true
i false
.
Nazwa pola | Typ | Opis |
---|---|---|
value |
bool |
Wartość logiczna. |
Wartość bajtów
Wiadomość opakowana dla: bytes
.
Reprezentacja JSON dla BytesValue
jest ciągiem JSON.
Nazwa pola | Typ | Opis |
---|---|---|
value |
bytes |
Bajty. |
Wartość typu double
Wiadomość opakowana dla: double
.
Reprezentacja JSON dla DoubleValue
to numer JSON.
Nazwa pola | Typ | Opis |
---|---|---|
value |
double |
Wartość podwójna. |
Czas trwania
Czas trwania reprezentuje podpisany przedział czasu o stałej długości wyrażony jako liczba sekund i ułamków sekund w rozdzielczości nanosekund. Niezależne jest od kalendarza i koncepcji, takich jak „dzień” czy „miesiąc”. Opiera się na sygnaturze czasowej, ponieważ różnica między 2 wartościami sygnatury czasowej to czas trwania. Można ją dodać lub odjąć od sygnatury czasowej. Zakres wynosi około -10 000 lat.
Przykład 1: obliczenie czasu trwania z 2 sygnatur czasowych w pseudokodu
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;
}
Przykład 2: sygnatura czasowa obliczeń z sygnaturą czasową + czas trwania w pseudokodu.
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;
}
Format JSON dla Duration
to String
, który kończy się s
i wskazuje sekundy. Jest poprzedzony liczbą sekund, a nanosekundami jest wyrażona jako ułamki dziesiętne.
Nazwa pola | Typ | Opis |
---|---|---|
seconds |
int64 |
Podpisano sekundy. Musi mieścić się w zakresie od -315 576 000 000 do +315 576 000 000 włącznie. |
nanos |
int32 |
Podpisane ułamki sekundy w rozdzielczości nanosekundy w danym okresie. Czasy trwania krótsze niż 1 sekunda są przedstawiane w polu 0 seconds i dodatnim lub ujemnym polu nanos . Jeśli czas trwania wynosi co najmniej 1 sekundę, wartość inna niż zero w polu nanos musi być taka sama jak w polu seconds . Musi mieścić się w zakresie od -999 999 999 do +999 999 999 włącznie. |
Pusta
Ogólna pusta wiadomość, której możesz użyć ponownie, aby uniknąć powielania pustych wiadomości w interfejsach API. Typowym przykładem jest użycie jej jako żądania lub typu odpowiedzi metody interfejsu API. Przykład:
service Foo {
rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty);
}
Reprezentacja JSON Empty
jest pustym obiektem {}
.
Enum
Definicja typu enum.
Nazwa pola | Typ | Opis |
---|---|---|
name |
string |
Nazwa typu enum. |
enumvalue |
|
Definicje wartości enum. |
options |
|
Opcje bufora protokołu. |
source_context |
|
Kontekst źródłowy. |
syntax |
|
Składnia źródłowa. |
Wartość num
Definicja wartości num.
Nazwa pola | Typ | Opis |
---|---|---|
name |
string |
Nazwa wartości num. |
number |
int32 |
Liczba wartości num. |
options |
|
Opcje bufora protokołu. |
Field
Jedno pole typu wiadomości.
Nazwa pola | Typ | Opis |
---|---|---|
kind |
|
Typ pola. |
cardinality |
|
Moc zbioru. |
number |
int32 |
Numer pola. |
name |
string |
Nazwa pola. |
type_url |
string |
Typ adresu URL pola (bez schematu) dla wiadomości lub typów wyliczenia. Przykład: "type.googleapis.com/google.protobuf.Timestamp" . |
oneof_index |
int32 |
Indeks typu pola w Type.oneofs dla wiadomości lub typów wyliczenia. Pierwszy typ ma indeks 1. Zero oznacza, że nie ma go na liście. |
packed |
bool |
Określa, czy chcesz używać innego przewodowego reprezentowania przewodów. |
options |
|
Opcje bufora protokołu. |
json_name |
string |
Nazwa JSON pola. |
default_value |
string |
Wartość ciągu przypisana do wartości domyślnej tego pola. Tylko składnia Proto2. |
Moc zbioru
Określa, czy pole jest opcjonalne, wymagane czy powtórzone.
Wartość num | Opis |
---|---|
CARDINALITY_UNKNOWN |
W przypadku pól o nieznanej mocy zbioru. |
CARDINALITY_OPTIONAL |
W przypadku pól opcjonalnych |
CARDINALITY_REQUIRED |
W polach wymaganych. Tylko składnia Proto2. |
CARDINALITY_REPEATED |
W przypadku pól powtórzonych. |
Rodzaj
Podstawowe typy pól.
Wartość num | Opis |
---|---|
TYPE_UNKNOWN |
Nieznany typ pola. |
TYPE_DOUBLE |
Typ pola podwójny. |
TYPE_FLOAT |
Typ zmiennoprzecinkowy typu pola. |
TYPE_INT64 |
Typ pola int64. |
TYPE_UINT64 |
Typ pola uint64. |
TYPE_INT32 |
Typ pola int32. |
TYPE_FIXED64 |
Typ pola został naprawiony. |
TYPE_FIXED32 |
Typ pola ustalony 32. |
TYPE_BOOL |
Typ pola logicznego. |
TYPE_STRING |
Ciąg typu pola. |
TYPE_GROUP |
Grupa typów pól. Tylko składnia Proto2 i wycofana. |
TYPE_MESSAGE |
Komunikat dotyczący typu pola. |
TYPE_BYTES |
Bajty typu pola. |
TYPE_UINT32 |
Typ pola uint32. |
TYPE_ENUM |
Wyliczenie typu pola. |
TYPE_SFIXED32 |
Typ pola „sfixed32”. |
TYPE_SFIXED64 |
Typ pola „sfixed64”. |
TYPE_SINT32 |
Typ pola: sint32. |
TYPE_SINT64 |
Typ pola: sint64. |
Maska pola
FieldMask
to zestaw symboli powiązanych ze ścieżkami, na przykład:
paths: "f.a"
paths: "f.b.d"
f
oznacza pole w wiadomości głównej, pola a
i b
w wiadomości w f
oraz d
w polu w wiadomości w f.b
.
Maski pól służą do określania podzbiorów pól, które powinny zostać zwrócone przez operację pobierania (prognozę) lub modyfikowane przez operację aktualizacji. Maski pól również mają niestandardowe kodowanie JSON (patrz poniżej).
Maski w prognozach
Gdy FieldMask
określa prognozę, interfejs API filtruje odpowiedź (lub komunikat podrzędny) tylko na te pola określone w masce. Weźmy na przykład taki komunikat z napisem „maskowanie”:
f {
a : 22
b {
d : 1
x : 2
}
y : 13
}
z: 8
Po zastosowaniu maski w poprzednim przykładzie odpowiedź interfejsu API nie będzie zawierać konkretnych wartości w polach x, y i z (ich wartość zostanie ustawiona jako domyślna i pominięta w danych wyjściowych proto):
f {
a : 22
b {
d : 1
}
}
Pole powtarzane jest niedozwolone oprócz ostatniej pozycji maski pola.
Jeśli w metodzie get nie ma obiektu FieldMask, ta operacja ma zastosowanie do wszystkich pól (tak jak w przypadku określenia maski pola).
Pamiętaj, że maska pola nie musi należeć do wiadomości z odpowiedzią najwyższego poziomu. W przypadku operacji pobierania REST maska ma zastosowanie bezpośrednio do odpowiedzi, ale w przypadku operacji na liście REST maska dotyczy każdej wiadomości na zwróconej liście zasobów. W przypadku metody niestandardowej REST można używać innych definicji. Jeśli maska jest stosowana, musi być ona dokładnie udokumentowana wraz z jej deklaracją w interfejsie API. W każdym przypadku wpływ na zwrócone zasoby/zasoby jest wymagany w przypadku interfejsów API.
Maski pól w operacjach aktualizowania
Maska w operacji aktualizowania określa, które pola zasobu docelowego będą aktualizowane. Interfejs API jest wymagany tylko do zmiany wartości pól określonych w masce, a pozostałe pola pozostają bez zmian. Jeśli do opisania zaktualizowanych wartości przekazywany jest zasób, interfejs API ignoruje wartości we wszystkich polach nieobjętych maską.
Aby można było przywrócić wartość domyślną, pole musi znajdować się w masce i musi być ustawiona na wartość domyślną w podanym zasobie. Aby zresetować wszystkie pola zasobu, podaj domyślną instancję zasobu i ustaw wszystkie pola w masce lub nie podawaj maski, jak opisano poniżej.
Jeśli w trakcie aktualizacji nie ma maski pola, operacja ma zastosowanie do wszystkich pól (tak jak w przypadku określenia maski wszystkich pól). Pamiętaj, że w przypadku rozwoju schematu może to oznaczać, że pola, których klient nie zna, i dlatego nie wypełniły żądania, zostaną zresetowane do wartości domyślnych. Jeśli takie zachowanie jest niepożądane, dana usługa może wymagać, aby klient zawsze tworzył maskę pola. W przeciwnym razie wystąpi błąd.
Tak jak w przypadku operacji pobierania, lokalizacja zasobu opisującego zaktualizowane wartości w komunikacie żądania zależy od rodzaju operacji. Interfejs API musi uwzględniać efekt maskowania pola.
Uwagi dotyczące protokołu REST HTTP
Rodzaj HTTP operacji aktualizacji, który korzysta z maski pola, musi być ustawiony na PATCH, a nie PUT, aby zapewnić zgodność z semantyką HTTP (PUT może być używane tylko do pełnej aktualizacji).
Kodowanie masek w formacie JSON
W formacie JSON maska pola jest zakodowana jako pojedynczy ciąg znaków, w którym ścieżki są rozdzielone przecinkiem. Nazwa pól w każdej ścieżce jest konwertowana na konwencje nazewnictwa stosowane w małych literach.
Weźmy na przykład te deklaracje wiadomości:
message Profile {
User user = 1;
Photo photo = 2;
}
message User {
string display_name = 1;
string address = 2;
}
W masce pola Proto dla atrybutu Profile
może wyglądać tak:
mask {
paths: "user.display_name"
paths: "photo"
}
W formacie JSON ta sama maska jest przedstawiona poniżej:
{
mask: "user.displayName,photo"
}
Nazwa pola | Typ | Opis |
---|---|---|
paths |
string |
Zestaw ścieżek masek pola. |
Liczba zmiennoprzecinkowa
Wiadomość opakowana dla: float
.
Reprezentacja JSON dla FloatValue
to numer JSON.
Nazwa pola | Typ | Opis |
---|---|---|
value |
float |
Liczba zmiennoprzecinkowa. |
Int32Value,
Wiadomość opakowana dla: int32
.
Reprezentacja JSON dla Int32Value
to numer JSON.
Nazwa pola | Typ | Opis |
---|---|---|
value |
int32 |
Wartość int32 |
Int64Value,
Wiadomość opakowana dla: int64
.
Reprezentacja JSON dla Int64Value
jest ciągiem JSON.
Nazwa pola | Typ | Opis |
---|---|---|
value |
int64 |
Wartość int64. |
Wartość listy
ListValue
to kod towarzyszący powtarzanemu polu wartości.
Reprezentacja JSON dla ListValue
to tablica JSON.
Nazwa pola | Typ | Opis |
---|---|---|
values |
|
Powtórzone pole wartości wpisywanych dynamicznie. |
Metoda
Metoda reprezentuje metodę API.
Nazwa pola | Typ | Opis |
---|---|---|
name |
string |
Prosta nazwa tej metody. |
request_type_url |
string |
Adres URL typu wiadomości wejściowej. |
request_streaming |
bool |
Jeśli ma wartość true (prawda), żądanie jest przesyłane strumieniowo. |
response_type_url |
string |
Adres URL typu komunikatu wyjściowego. |
response_streaming |
bool |
Jeśli ma wartość true (prawda), odpowiedź jest przesyłana strumieniowo. |
options |
|
Wszystkie metadane dołączone do metody. |
syntax |
|
Składnia źródłowa tej metody. |
Mieszanka
Deklaruje interfejs API, który ma być uwzględniony w tym API. Uwzględniany interfejs API musi zadeklarować wszystkie metody z uwzględnionego interfejsu API, ale dokumentacja i opcje są dziedziczone w następujący sposób:
Jeśli po usunięciu komentarza i spacji odstępy tekstowe dokumentacji zdeklarowanej metody będą puste, zostanie ona odziedziczona z metody oryginalnej.
Każda adnotacja należąca do konfiguracji usługi (http, widoczność), która nie została ustawiona w zadeklarowanej metodzie, zostanie odziedziczona.
Jeśli adnotacja http jest dziedziczona, wzorzec ścieżki jest zmodyfikowany w następujący sposób. Prefiks zostanie zastąpiony wersją interfejsu API uwzględniającą też ścieżkę
root
, jeśli została określona.
Przykład prostej składanki:
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=**}";
}
}
Przykład konfiguracji mieszanki:
apis:
- name: google.storage.v2.Storage
mixins:
- name: google.acl.v1.AccessControl
Konstrukcja mieszanki sugeruje, że wszystkie metody w zasadzie AccessControl
są również zadeklarowane z taką samą nazwą i w przypadku tych typów żądań i odpowiedzi w Storage
. Po zastosowaniu dokumentacji i adnotacji generator dokumentacji lub adnotacja zobaczy obowiązującą metodę Storage.GetAcl
:
service Storage {
// Get the underlying ACL object.
rpc GetAcl(GetAclRequest) returns (Acl) {
option (google.api.http).get = "/v2/{resource=**}:getAcl";
}
...
}
Zwróć uwagę, że wersja wzorca ścieżki zmieniła się z v1
na v2
.
Jeśli pole root
w składance jest określone, powinno być względne, w którym znajdują się dziedziczone ścieżki HTTP. Przykład
apis:
- name: google.storage.v2.Storage
mixins:
- name: google.acl.v1.AccessControl
root: acls
Sugeruje to następującą dziedziczoną adnotację HTTP:
service Storage {
// Get the underlying ACL object.
rpc GetAcl(GetAclRequest) returns (Acl) {
option (google.api.http).get = "/v2/acls/{resource=**}:getAcl";
}
...
}
Nazwa pola | Typ | Opis |
---|---|---|
name |
string |
Pełna nazwa interfejsu API, która jest uwzględniona. |
root |
string |
Jeśli to pole nie jest puste, podaj ścieżkę, której dotyczą dziedziczone ścieżki HTTP. |
Wartość null
NullValue
to liczba pojedyncza reprezentująca wartość null dla typu połączenia Value
.
Reprezentacja JSON dla NullValue
to JSON null
.
Wartość num | Opis |
---|---|
NULL_VALUE |
Wartość pusta. |
Option
Opcja bufora protokołu, którą można dołączyć do wiadomości, pola, wyliczenia itp.
Nazwa pola | Typ | Opis |
---|---|---|
name |
string |
Nazwa opcji. Na przykład: "java_package" . |
value |
|
Wartość opcji. Na przykład: "com.google.protobuf" . |
Kontekst źródłowy
SourceContext
reprezentuje informacje o źródle elementu protobuf, takie jak plik, w którym jest zdefiniowany.
Nazwa pola | Typ | Opis |
---|---|---|
file_name |
string |
Zakwalifikowana ścieżka nazwa pliku .proto zawierającego powiązany element protobuf. na przykład: "google/protobuf/source.proto" . |
Wartość ciągu znaków
Wiadomość opakowana dla: string
.
Reprezentacja JSON dla StringValue
jest ciągiem JSON.
Nazwa pola | Typ | Opis |
---|---|---|
value |
string |
Wartość ciągu. |
Uporządkowane
Struct
reprezentuje wartość danych strukturalnych składającą się z pól zmapowanych na wartości wpisane dynamicznie. W przypadku niektórych języków Struct
może być obsługiwana przez natywną reprezentację. Na przykład w językach skryptowych, takich jak JS, struktura jest reprezentowana jako obiekt. Szczegółowe informacje na temat takiej reprezentacji znajdziesz w opisie protokołu proto, który obsługuje dany język.
Reprezentacja JSON dla Struct
to obiekt JSON.
Nazwa pola | Typ | Opis |
---|---|---|
fields |
map<string, |
Mapa dynamicznie wpisywanych wartości. |
Składnia
Składnia, w której definiuje się element bufora protokołu.
Wartość num | Opis |
---|---|
SYNTAX_PROTO2 |
Składnia proto2 . |
SYNTAX_PROTO3 |
Składnia proto3 . |
Sygnatura czasowa
Sygnatura czasowa reprezentuje punkt w czasie niezależny od strefy czasowej lub kalendarza wyrażony w sekundach i ułamkach sekund w nanosekundach w czasie UTC. Jest on kodowany za pomocą kalendarza gregoriańskiego z wyprzedzeniem, który sięga wstecz do pierwszego roku. Jest kodowany z założeniem, że wszystkie minuty trwają 60 sekund, tj. są one rozmyte, więc do interpretacji nie potrzeba kolejnej tabeli pomocniczej. Zakres wynosi od 0001-01-01T00:00:00Z do 9999-12-31T23:59:59.999999999Z. Ograniczenie tego zakresu daje pewność, że ciąg znaków zostanie przekonwertowany na ciąg znaków zgodny z RFC 3339. Zobacz https://www.ietf.org/rfc/rfc3339.txt.
Przykład 1: sygnatura czasowa obliczenia z POSIX time()
.
Timestamp timestamp;
timestamp.set_seconds(time(NULL));
timestamp.set_nanos(0);
Przykład 2: sygnatura czasowa obliczenia z POSIX gettimeofday()
.
struct timeval tv;
gettimeofday(&tv, NULL);
Timestamp timestamp;
timestamp.set_seconds(tv.tv_sec);
timestamp.set_nanos(tv.tv_usec * 1000);
Przykład 3: sygnatura czasowa obliczenia z systemu Win32 GetSystemTimeAsFileTime()
.
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));
Przykład 4: sygnatura czasowa obliczenia w Javie System.currentTimeMillis()
.
long millis = System.currentTimeMillis();
Timestamp timestamp = Timestamp.newBuilder().setSeconds(millis / 1000)
.setNanos((int) ((millis % 1000) * 1000000)).build();
Przykład 5: sygnatura czasowa obliczeń w bieżącym czasie w Pythonie.
now = time.time()
seconds = int(now)
nanos = int((now - seconds) * 10**9)
timestamp = Timestamp(seconds=seconds, nanos=nanos)
Nazwa pola | Typ | Opis |
---|---|---|
seconds |
int64 |
Reprezentuje czas wyrażony w sekundach UTC od czasu Unix 1970-01-01T00:00:00Z. Musi mieścić się w zakresie od 0001-01-01T00:00:00Z do 9999-12-31T23:59:59Z (włącznie). |
nanos |
int32 |
Nieujemne wartości ułamkowe sekundy w rozdzielczości nanosekundy. Wartość ujemna wartości dziesiętnych z ułamkami musi nadal być liczbą ujemną z czasem. Musi mieścić się w zakresie od 0 do 999 999 999 włącznie. |
Typ
Typ komunikatu dotyczącego bufora protokołu.
Nazwa pola | Typ | Opis |
---|---|---|
name |
string |
Pełna i jednoznaczna nazwa wiadomości. |
fields |
|
Lista pól. |
oneofs |
string |
Lista typów występujących w definicjach oneof w tym typie. |
options |
|
Opcje bufora protokołu. |
source_context |
|
Kontekst źródłowy. |
syntax |
|
Składnia źródłowa. |
UInt32Wartość
Wiadomość opakowana dla: uint32
.
Reprezentacja JSON dla UInt32Value
to numer JSON.
Nazwa pola | Typ | Opis |
---|---|---|
value |
uint32 |
Wartość uint32. |
UInt64Wartość
Wiadomość opakowana dla: uint64
.
Reprezentacja JSON dla UInt64Value
jest ciągiem JSON.
Nazwa pola | Typ | Opis |
---|---|---|
value |
uint64 |
Wartość uint64. |
Wartość
Value
reprezentuje dynamicznie wpisaną wartość, która może być wartością null, liczbą, ciągiem znaków, wartością logiczną, rekurencyjną strukturą lub listą wartości. Producent wartości powinien oczekiwać jednej z tych wersji produktu, a brak wartości oznacza błąd.
Reprezentacja JSON dla Value
to wartość JSON.
Nazwa pola | Typ | Opis |
---|---|---|
Unia Europejska – tylko jedno z tych pól: | ||
null_value |
|
Reprezentuje pustą wartość. |
number_value |
double |
Reprezentuje podwójną wartość. Pamiętaj, że próba zserializowania NaN lub Infinity powoduje błąd. (Nie można zastosować seriali do wartości „NaN” ani „Nieskończoność”, tak jak w przypadku pól zwykłych, ponieważ byłyby one interpretowane jako wartość_ciągu tekstowego, a nie wartości argumentu liczba_wartości). |
string_value |
string |
Reprezentuje wartość ciągu znaków. |
bool_value |
bool |
Reprezentuje wartość logiczną. |
struct_value |
|
Odzwierciedla wartość strukturalną. |
list_value |
|
Reprezentuje powtarzający się element Value . |