Serializador binario y JSON multiplataforma para .NET Dotnet.
Parte integrada de la base de datos Dbreeze, utilizada en Raft.net
Llame a la siguiente línea para crear código para el serialzer:
var resbof = BiserObjectify . Generator . Run ( typeof ( TS6 ) , true ,
@"D:Temp1" , forBiserBinary : true , forBiserJson : true , null ) ;El primer argumento es el tipo de objeto raíz que se serializa (puede contener otros objetos que también deben ser serializados). El segundo argumento significa que Biserobjectify debe preparar el serializador para todos los objetos incluidos en el objeto raíz. El tercer argumento apunta a la carpeta donde se crearán los archivos C# por objeto. Los argumentos cuarto y quinto significan que queremos usar los serializadores binarios y JSON. El sexto argumento es un hashset (o nulo) con los nombres de propiedad que no se serializarán.
La variable RESBOF contendrá la misma información que en los archivos generados también como un diccionario.
public partial class TS6
{
public string P1 { get ; set ; }
.. . TS6 t6 = new TS6 ( )
{
P1 = "dsfs" ,
P2 = 456 ,
P3 = DateTime . UtcNow ,
P4 = new List < Dictionary < DateTime , Tuple < int , string > >>
{
new Dictionary < DateTime , Tuple < int , string > > {
{ DateTime . UtcNow . AddMinutes ( - 1 ) , new Tuple < int , string > ( 12 , "testvar" ) } ,
{ DateTime . UtcNow . AddMinutes ( - 2 ) , new Tuple < int , string > ( 125 , "testvar123" ) }
} ,
new Dictionary < DateTime , Tuple < int , string > > {
{ DateTime . UtcNow . AddMinutes ( - 3 ) , new Tuple < int , string > ( 17 , "dsfsdtestvar" ) } ,
{ DateTime . UtcNow . AddMinutes ( - 4 ) , new Tuple < int , string > ( 15625 , "sdfsdtestvar" ) }
}
} ,
P5 = new Dictionary < int , Tuple < int , string > > {
{ 12 , new Tuple < int , string > ( 478 , "dsffdf" ) } ,
{ 178 , new Tuple < int , string > ( 5687 , "sdfsd" ) }
} ,
P6 = new Tuple < int , string , Tuple < List < string > , DateTime > > ( 445 , "dsfdfgfgfg" ,
new Tuple < List < string > , DateTime > ( new List < string > { "a1" , "a2" } , DateTime . Now . AddDays ( 58 ) ) ) ,
P7 = new List < string > { "fgdfgrdfg" , "dfgfdgdfg" } ,
P8 = new Dictionary < int , List < string > > {
{ 34 , new List < string > { "drtttz" , "ghhtht" } } ,
{ 4534 , new List < string > { "dfgfghfgz" , "6546ghhtht" } }
} ,
P25 = new Dictionary < int , List < string [ , ] [ ] [ , , ] > > [ , , , ] [ ] [ , , ]
.. .
} var serializedObjectAsByteArray = t6 . BiserEncoder ( ) . Encode ( ) ;
var retoredBinaryObject = TS6 . BiserDecode ( serializedObjectAsByteArray ) ; var jsonSettings = new Biser . JsonSettings { DateFormat = Biser . JsonSettings . DateTimeStyle . ISO } ;
string prettifiedJsonString = new Biser . JsonEncoder ( t6 , jsonSettings )
. GetJSON ( Biser . JsonSettings . JsonStringStyle . Prettify ) ;
var restoredJsonObject = TS6 . BiserJsonDecode ( prettifiedJsonString , settings : jsonSettings ) ; Para la comprensión profunda:
Documentación binaria biser
Documentación JSON Biser
Ejemplos de codificadores/decodificadores manuales