Pola porządkowe to unikalna tożsamość każdego pola. Podczas serializacji do oznaczonych protokołów binarnych numery te są używane do wskazania, które pola znajdują się w polu danych. Nazwy pól nie są używane. (Zmiana nazwy pola w pliku .bond powoduje, że nie łamie zserializowanej kompatybilności danych binarnych [chociaż zobacz poniżej zastrzeżenia dotyczące protokołów tekstowych]). Liczby są mniejsze niż ciągi znaków, co pomaga zmniejszyć rozmiar bloku danych, ale także poprawia jakość serializacji/czas deserializacji.
Nie można ponownie użyć tego samego numeru porządkowego w obrębie tej samej struktury.
Nie ma specjalnego traktowania, gdy dziedziczysz z struct (lub jeśli masz strukturę struct wewnątrz struktury). Bond utrzymuje porządek dla poszczególnych struktur. Konkretnie, po to legalne i będzie działać:
namespace inherit_use_same_ordinal;
struct Base {
0: string field;
}
struct Derived : Base {
0: bool field;
}
zastrzeżenie o serializacji tekstowych protokołów, takich jak Proste JSON i XML: Proste tych protokołów wykorzystują nazwę pola jako identyfikator pola. W tych protokołach zmiana nazwy pola powoduje zserializowaną kompatybilność danych.
Ponadto prosty JSON i prosty XML spłaszczają hierarchię dziedziczenia, więc ponowne użycie nazw w Bazie i Pochodnym spowoduje konflikt. Oba mają sposoby obejścia tego. W przypadku prostego kodu XML, SimpleXml.Settings.UseNamespaces
parameter can be set to true
może emitować w pełni kwalifikowane nazwy.
dla prostych JSON The Bond attribute JsonName
mogą być wykorzystane do zmiany nazwy stosowane do prostego JSON serializacji, aby uniknąć konfliktu:
struct Derived : Base {
[JsonName("derived_field")]
0: bool field;
}
Dokumentacja związana z ty, mówi 'Wartość porządkowej musi niepodpisany 16- bitowa liczba całkowita, unikalna dla każdego pola w typie '. – TZHX