Słówko o serializacji w ASP.Net Core

Dziś będzie krótko. Ostatnio podczas pracy nad aplikacją webową na studia mieliśmy mały problem z odpytywaniem naszego api, mianowicie nie udało nam się zmapować obiektu zwracanego z naszego api na obiekt po stronie Angulara. Powód ten okazał się bardzo prosty: mimo, iż properties naszego modelu powinno zostać zserializowane na nazwy rozpoczynające się z dużej litery, zostały zserializowane na małe. Po mały researchu okazało się, iż w ASP.Net Core serializacja domyślnie tworzy nam obiekt z nazwali zaczynającymi się z małych liter. Dla przykładu klasa, która posiada takie pola:

public class Person
{
    public string Name {get;set;}
    public string Surname {get;set;}
}

zostanie zserializowana do takiej postaci:

{
  "name": "Krystian",
  "surname": "Kolad"
}

Aby temu zaradzić, w naszej klasie Startup.cs w projekcie ASP.Net musimy zamienić linijkę:

services.AddMvc();

na:

services
    .AddMvc()
    .AddJsonOptions(options => options.SerializerSettings.ContractResolver = new DefaultContractResolver());

dodając równocześnie w tej samej klasie:

using Newtonsoft.Json.Serialization;

W tym momencie nasza klasa person zostanie zserializowana do postaci:

{
  "Name": "Krystian",
  "Surname": "Kolad"
}

To tyle na dziś, mam nadzieję, że komuś się to przyda i nie będzie miał więcej problemów z serializacją ;D

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s