Json etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
Json etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster

13 Ekim 2017 Cuma

JavaScriptSerializer Sınıfı

Giriş
Şu satırı dahil ederiz. Bu sınıfla aynı işi yapan bir diğer sınıf DataContractJsonSerializer Sınıfı.
using System.Web.Script.Serialization;
Constructor
Şöyle yaparız.
JavaScriptSerializer js = new JavaScriptSerializer();
Deserialize metodu - string
Şöyle yaparız.
var f = js.Deserialize<Foo>(json);
Deserialize metodu - stream
Şöyle yaparız.
Stream stream = ...;
StreamReader reader = new StreamReader (stream);
string str = reader.ReadToEnd();

var obj = js.Deserialize<dynamic>(str);
DeserializeObject metodu - string
Şöyle yaparız.
var myJsonObj = js.DeserializeObject (str);
Serialize metodu
Verilen nesneyi json'a çevirir.

Örnek
Şöyle yaparız.
string stringValue = js.Serialize(Foo);
Örnek
Şöyle yaparız.
var strZipCodes = "34520,63631,45628";

string jarrZipCodes = new JavaScriptSerializer().Serialize(strZipCodes.Split(','));

22 Ocak 2017 Pazar

NewTonsoft JsonConverter Annotation

JsonConverter - StringEnumConverter
Elimizde bir Enum olsun.
public enum GameType  
{
  None,
  Simple,
  Regular,
  Comeplex,
}
Şöyle yaparız.
class Game  
{
  [JsonConverter(typeof(StringEnumConverter))]  
  public GameType NameType { get; private set; } //enum
  ...
}
Bu sınıfı json'a çevirince enum alan için string elde ederiz. Çıktı olarak şunu alırız.
{
  ...,
  "NameType": "Regular",
  ...
}
String'den enum'a çevirmek için şöyle yaparız.
[JsonConstructor]       
public Game([JsonConverter(typeof(StringEnumConverter))] GameType nameType)
{
  this.NameType = nameType;
}

21 Ocak 2017 Cumartesi

NewtonSoft JsonConstructor Annotation

Giriş
Açıklaması şöyle
If your class has more than one constructor, mark the one that has all the required immutable properties with [JsonConstructor]
Şöyle yaparız.
public Game(...) 
{
}

[JsonConstructor]       
public Game(...)
{
}

NewtonSoft Json

Giriş
.Net dünyasında Json ile uğraşmanın standart yolu DataContractJsonSerializer sınıfını kullanmak. Ancak Newtonsoft'un Json kütüphanesinin daha iyi olduğunu iddia ediliyor.
Şu using ifadesinini kullanırız.
using Newtonsoft.Json;

Json formatı
Json dosyasında comment kullanılmaz. Json sadece veri içindir.

Json süslü parantezler içinde "key1": value1,"key2": value1...} şeklindedir. Key değerleri hep tırnak içindedir.
{
        "data": 1290,
        "value": "a"
}
İsmi Basic olan dizi
{
      "Basic": [
        {
          "cardId": "HERO_09",
          "cardSet": "Basic",
          ...
        },{...},{...}
       ]
}
Nesne içinde nesne
{
    "apikey": "example apikey",
    "id": "example id",
    "email": {
        "email": "example email",
        "euid": "example euid",
        "leid": "example leid"
            }
}
JsonConstructor Annotation
JsonConstructor Annotation yazısına taşıdım.

JsonProperty Annotation
Örnek 1
Elimizde şöyle bir json olsun
[{"Yes":"52","No":"41"}]
Şöyle yaparız.
public class Survey
{
  [JsonProperty("Yes")]
  public string Yes { get; set; }

  [JsonProperty("No")]
  public string No { get; set; }
}
Örnek 2
Şöyle yaparız.
public class Foo
{
  [JsonProperty("Product")]
  public List<Product> Products { get; set; }
}
JsonConvert Sınıfı
JsonConvert Sınıfı yazısına taşıdım.

CustomCreationConverter Sınıfı
Şöyle yaparız.

DataTableConverter Sınıfı
Şöyle yaparız

JsonSerializer sınıfı
Stream ile Deserialize
Şöyle kullanılır
using (StreamReader sr = new StreamReader("TestFile.txt"))
{
  JsonSerializer serializer = new JsonSerializer();
  MyObject myObject = serializer.DeserializeObject<MyObject>(sr)
}