18 Kasım 2015 Çarşamba

C# - JSON Nesne Dönüşümü

C# - JSON Nesne Dönüşümü

Merhaba arkadaşlar, aslında sırayla gidiyordum fakat bir değişiklik yapıp yeni öğrendiğim bir konu hakkında yazmaya karar verdim. Yeni başlayan arkadaşlara bu makale biraz ağır gelecektir fakat ileride işlerine yarayacaktır.

Bu makalemde;

  • .Net nesnelerini (class) Json formatına (string) dönüştüren (serialize eden) 
  •  Json formatındaki string data yı kullanarak .Net nesnesi (class) oluşturan (deserialize eden) 
bir helper class ı anlatmaktayım.

JsonHelper class ımızı tip hataları ile karşılaşmamak için <Tentity> parametresi ile (generic – type safe) tanımlıyoruz, böylece helper class ımız hangi tip ile çalışacağını biliyor olacaktır ve bir kere bu class ı uygulamamıza monte ettikten sonra tüm class larımız için kullanabiliyor olacağız.

Bir sonraki makalemizde görüşmek üzere!!

Kodlar:



/// <summary>

    /// Performs Json data convert operations

    /// </summary>

    public class JsonHelper<TEntity> where TEntity : class

    {

        /// <summary>

        /// Converts from .net class to Json string

        /// </summary>

        public string Serialize(TEntity entity)

        {

//Dönüş nesnesini tanımla

string retval = null;

//Json dönüştürücüyü tanımla

DataContractJsonSerializer jser = new DataContractJsonSerializer(typeof(TEntity));

//İşlemde kullanılacak olan Stream (akım) nesnesini tanımla          

MemoryStream ms = new MemoryStream();

//Gelen .net nesnesini stream içine yaz

            jser.WriteObject(ms, entity);

     //Stream den Json stringi al

            retval = Encoding.UTF8.GetString(ms.ToArray());

            ms.Close();

            return retval;

        }

        /// <summary>

        /// Converts from Json string to .net class

        /// </summary>

        public TEntity DeSerialize(string jsonData)

        {

           

            TEntity retval = null;

            DataContractJsonSerializer jser = new DataContractJsonSerializer(typeof(TEntity));

            MemoryStream ms = new MemoryStream();

            ms = new MemoryStream(Encoding.UTF8.GetBytes(jsonData));

            retval = (TEntity)jser.ReadObject(ms);

            return retval;

        }

    }

Hiç yorum yok:

Yorum Gönder