Let’s say we have two JSON documents that we would like to merge. How can this be achieved using Newtonsoft.Json and System.Text.Json libraries?
Mikołaj KamińskiHomeAbout meContact Today I encountered an interesting case. I got a report that “something changes the date format while processing data”. I started debugging our distributed system looking for the source of the problem. It took me a while, so I’d like to share this story today, so you don’t have to waste your time.
Sztuka programowania 1346 dni, 3 godziny, 8 minut temu 58 źrodło rozwiń
Niech ten konkurs wpędzi Was w "ostrą jazdę bez trzymanki". Kto będzie pierwszy? Na kogo spadnie szacunek .Net'owej społeczności? Do zwycięzcy wyślę ładnie zapakowane 0.7 Jack’a Daniels’a i dziesięć setek Wiśniówki Lubelskiej. Tematem konkursu jest zoptymalizowanie procesu zamiany ciągu bajtów na obiekty. Wersja uznana jest za najszybszą jeśli od poprzedniej najszybszej wersji będzie szybsza o 5% w każdym z 10 powtórzeń testu. Nagroda zwycięscy zostaje przyznana wówczas gdy po pull request z najsz...
Sztuka programowania 2433 dni, 5 godzin, 50 minut temu 145 źrodło rozwiń
JSON.NET to popularny standard używany w większości projektów .NET. Czy istnieją bardziej wydajne alternatywy serializacji do JSONa? Zachęcam do zapoznania się z perłą serializacji do tego formatu, Jil.
Sztuka programowania 2502 dni, 22 minuty temu 82 źrodło rozwiń
Zapewne każdy serializował kiedyś obiekt, który posiada ustawione tylko jedno z kilku (-nastu) pól. W jaki sposób efektywnie zapisywać i odczytywać takie dane? Jak może pomóc w tym nam bibliotekat protobuf-net? Zapraszam do świata "dykryminowanych unii"
Sztuka programowania 2517 dni, 4 godziny, 49 minut temu 60 źrodło rozwiń
Najbardziej popularnym Value Object jest Money. W tym przykładzie instancje możemy tworzyć tylko poprzez metode Create() (taka fabryka). Konstruktor jest prywatny. Pewnie dla tego przykładu lepiej mieć po prostu publiczny konstruktor z dwoma parametrami, ale mam wiele przykładów innych bardziej skomplikowanych Value Objects, gdzie podejście z prywatnym konstruktorem i kilkoma fabrykami walidującymi różne przypadki ma sens.
Sztuka programowania 2591 dni, 4 godziny, 47 minut temu 138 źrodło rozwiń
Podczas pracy nad moim nowym projektem SewingMachine zacząłem zastanawiać się, czy w szczególnych wypadkach, serializacja obiektów nie mogłaby zachodzić szybciej. Zachęcam do poznania podejścia, które pozwala na 10x (słownie: dziesięć razy) szybszą serializację, zgodną z formatem protobuf-net.
Napisz odpowiedź Serializacja jest procesem przekształcania obiektów, do postaci tekstowej lub binarnej. .NET framework zapewnia nam kilka klas, takich jak XMLSerializer, DataContractJsonSerializer czy BinaryFormatter, które umożliwiają serializację danych do różnych formatów. Ponadto, do dyspozycji mamy wiele bibliotek firm trzecich, przez co wybór najlepszej metody staje się o wiele trudniejszy. Generalnie, każde narzędzie, czy format posiada swoje wady i zalety, dlatego też wybierając rozwiązania do ...
Sztuka programowania 3575 dni, 4 godziny, 1 minutę temu 436 źrodło rozwiń
Przemysław Walkowski.Ostatnio chciałem serializować i deserializować liste gdzie typem listy był interfejs. Chciałem do tego wykorzystać XmlSerializer-a. Okazało się, że przy użyciu tej klasy nie można serializować listy interfesjów do XML-a. Już chciałem szukać dlaczego nie można ale miałem trochę czasu i stwierdziłem, że tym razem zrobimy to w trudny sposób. Poniżej prezentuje jak można serializować i deserializować listę interfejsów.
Sztuka programowania 3578 dni, 1 godzinę, 46 minut temu 447 źrodło rozwiń
W jednym z projektów spotkałem się z problemem dotyczącym wygenerowanej klasy na podstawie .xsd. Po stworzeniu kodu odpowiedzialnego za serializację i jego uruchomieniu...
Dzisiaj będzie krótko, gdyż temat jest dość krótki. Artykuł o tej tematyce piszę z powodu tego, ponieważ w polskim internecie ciężko znaleźć publikacje o serializacji i deserializacji binarnej, raczej spotykam się z serializacją do xml. Dla osób bardzo początkujących opiszę co to ów serializacja jest. Opisując to najprościej jest to zapisanie stanów obiektów do pliku w postaci binarnej, czyli nieczytelnej dla użytkownika. Deserializacja ...
Jeśli kiedykolwiek chciałeś stworzyć xml'a z obiektu, do którego klasy nie mogłeś modyfikować, a nie wystarczał Ci .net-owy XmlSerializer, sprawdź tą bibliotekę, może tobie też się przyda.
Bazy danych i XML 4139 dni, 6 godzin, 40 minut temu 178 źrodło rozwiń
Serialziacja jest dobrze znanym tematem. Jakiś czas temu pisałem, jak oddelegować serializację jednego obiektu do drugiego. Pokazałem to na przykładzie wzorca singleton – w tamtym przypadku chcieliśmy oddelegować serializację do IObjectReference, który zwracał po prostu zawsze tą samą instancję. Dziś trochę inny scenariusz. Załóżmy, że w plikach, zawsze chcemy trzymać czas w UTC a nie w konkretnej strefie. Ponadto nie mamy dostępu ani do kodu źródłowego DateTime ani nie chcemy korzystać z DateTimeOffset...
Sztuka programowania 4237 dni, 7 godzin, 59 minut temu 153 źrodło rozwiń
Czasami zachodzi potrzeba serializacji obiektów, które powinny mieć maksymalnie jedną kopie w tym samym AppDomain. Klasycznym przykładem jest System.DBNull, którego deklaracja wygląda następująco:[SerializableAttribute] [ComVisibleAttribute(true)] publicsealedclass DBNull : ISerializable, IConvertible Załóżmy, że mamy klasę, w której jedna z właściwości ma wartość System.DBNull. Oczywiście podczas serializacji i potem deserializacji nie chcemy tworzyć nowej instancji DBNull – jest to sprzeczne z ...
Sztuka programowania 4302 dni, 5 godzin, 38 minut temu 106 źrodło rozwiń
Załóżmy, że mamy następujący kod:[Serializable] class Person { publicstring Name { get; set; } } Atrybut Serializable mówi, że będzie wspierana serializacja za pomocą IFormatter (np. BinaryFormatter). Jeśli chcemy wspierać ten mechanizm, zawsze powinniśmy tworzyć jawnie backing-field. Kompilator w końcu może wygenerować tak naprawdę dowolną nazwę. Zajrzyjmy do Reflector, aby zobaczyć jak wygląda wewnętrzna struktura: Wygenerowane pole to:[CompilerGenerated] privatestring
Sztuka programowania 4304 dni, 18 godzin, 41 minut temu 147 źrodło rozwiń
Rzezanie w czystym xml’u nie jest raczej przyjemne. Używnia XmlNode zamiast stringów nie jest wielkim pocieszem. Nie tędy droga. Dużo prościej stworzyć sobie obiekty które następnie będziemy serializować (deserializować) do XMLa.
Sztuka programowania 4382 dni, 17 godzin, 11 minut temu 106 źrodło rozwiń
Klasa XmlSerializer służy do serializacji całych klas. Za pomocą atrybutu XmlIgnore można wykluczyć właściwości, których nie chcemy zapisywać. Problem pojawia się gdy w klasie pochodnej chcemy wykluczyć jakieś pola z klasy bazowej tj.:class Employee { publicstring FirstName { get; set; } } class Manager:Employee { //...} Serializaując Employee chcemy zapisać FirstName. Z kolei serializując Manger nie chcemy już tego robić. Jak uzyskać taki efekt? Dodając atrybut XmlIgnore w Employee spowoduje...
Sztuka programowania 4422 dni, 18 godzin, 53 minuty temu 82 źrodło rozwiń
Tworzenie obiektów w .Net jest utożsamiane z zarezerwowaniem dla nich pewnej pamięci, a następnie wykonaniem konstruktora(domyślnego lub parametryzowanego). Jednak w pewnych przypadkach wykonywanie kodu zawartego w konstruktorze może być niepożądane. Istnieje jednak sposób by tego uniknąć.
Wpis o tym dlaczego w projektach na Windows Phone, Silverlight do serializacji binarnej używam biblioteki SharpSerializer oraz jak przeportowałem ją na .NET 4.5 oraz Windows Runtime.
Mobile development 4424 dni, 18 godzin, 43 minuty temu 54 źrodło rozwiń
Serializator XML'owy platformy .NET jest bardzo łatwy i przyjemny w użyciu, ale czasami jego działanie może sprowadzić nas na manowce. Poniższy kod obrazuje o co mi chodzi. Zacznijmy od przykładowej, bardzo prostej klasy, którą będziemy serializować...