Mam takie zajęcia:
class MyDate
{
int year, month, day;
}
class Lad
{
string firstName;
string lastName;
MyDate dateOfBirth;
}
I chciałbym przekształcić Lad
obiekt w ciąg JSON w następujący sposób:
{
"firstName":"Markoff",
"lastName":"Chaney",
"dateOfBirth":
{
"year":"1901",
"month":"4",
"day":"30"
}
}
(bez formatowania). Znalazłem ten link , ale używa przestrzeni nazw, która nie jest w .NET 4 . Słyszałem także o JSON.NET , ale ich witryna wydaje się w tej chwili niedostępna i nie chcę używać zewnętrznych plików DLL.
Czy istnieją inne opcje oprócz ręcznego tworzenia modułu zapisującego ciąg JSON ?
c#
.net
json
serialization
Hui
źródło
źródło
Odpowiedzi:
Możesz użyć
JavaScriptSerializer
klasy (dodaj odniesienie doSystem.Web.Extensions
):Pełny przykład:
źródło
classes
najson
format, mam nadzieję, że ktoś komuś pomoże.System.Web.Extensions
, musisz miećASP.NET AJAX 1.0
lubASP.NET 3.5
zainstalować w systemie. Proszę zobaczyć ten stackoverflow.com/questions/7723489/…Ponieważ wszyscy kochamy jednowarstwowe
... ten zależy od pakietu Newtonsoft NuGet, który jest popularny i lepszy niż domyślny serializator.
Dokumentacja: Serializacja i deserializacja JSON
źródło
Użyj biblioteki Json.Net , którą możesz pobrać z Nuget Packet Manager.
Serializacja do ciągu Json:
Deserializowanie do obiektu:
źródło
Użyj
DataContractJsonSerializer
klasy: MSDN1 , MSDN2 .Mój przykład: TUTAJ .
W przeciwieństwie do tego może również bezpiecznie deserializować obiekty z ciągu JSON
JavaScriptSerializer
. Ale osobiście nadal wolę Json.NET .źródło
Możesz to osiągnąć za pomocą Newtonsoft.json. Zainstaluj Newtonsoft.json z NuGet. I wtedy:
źródło
Wooou! Naprawdę lepiej przy użyciu frameworka JSON :)
Oto mój przykład przy użyciu Json.NET ( http://james.newtonking.com/json ):
Test:
Wynik:
Teraz zaimplementuję metodę konstruktora, która otrzyma ciąg JSON i zapełni pola klasy.
źródło
Nowy serializator JSON jest dostępny w
System.Text.Json
przestrzeni nazw. Jest zawarty we wspólnym środowisku .NET Core 3.0 i jest w pakiecie NuGet dla projektów ukierunkowanych na .NET Standard lub .NET Framework lub .NET Core 2.x.Przykładowy kod:
W tym przykładzie klasy, które mają być serializowane, mają raczej właściwości niż pola;
System.Text.Json
serializer obecnie nie szeregować pól.Dokumentacja:
źródło
Jeśli nie są bardzo duże, to prawdopodobnie twoja sprawa eksportuje je jako JSON.
Dzięki temu jest przenośny na wszystkie platformy.
źródło
Jeśli korzystasz z kontrolera sieci ASP.NET MVC, jest to tak proste, jak:
Nie mogę uwierzyć, że nikt o tym nie wspominał.
źródło
Głosowałbym na Serializer JSON firmy ServiceStack:
Jest to również najszybszy serializator JSON dostępny dla platformy .NET: http://www.servicestack.net/benchmarks/
źródło
Użyj poniższego kodu do konwersji XML na JSON.
źródło
Użyj tych narzędzi do wygenerowania klasy C #, a następnie użyj tego kodu do serializacji obiektu:
źródło
Jest to tak proste (działa również w przypadku obiektów dynamicznych (obiekt typu)):
źródło
Serializer
Obiekt
Realizacja
Wynik
źródło