4 Nisan 2018 Çarşamba

NewTonsoft JsonConvert Sınıfı

Giriş
Şu satırı dahil ederiz.
using Newtonsoft.Json;
Deserialize metodu - str
Eğer type vermezsek Object tipi döner.  Şöyle yaparız.
Object convertObj = JsonConvert.DeserializeObject (json);
Şöyle yaparız. İstenilen nesneye cast etmek gerekir.
var json = "[{'a':'aaa','b':'bbb','c':'ccc'},{'a':'aa','b':'bb','c':'cc'}]";
var ja = (JArray)JsonConvert.DeserializeObject(json);
var jo = (JObject) ja[0];
Console.WriteLine(jo["a"]);
Deserialize metodu - str + Type
json model tipine tam olarak uymasa, yani daha fazla alan içerse bile sorun olmuyor.

Örnek
Elimizde şöyle bir kod olsun.
class Guardian
{

    [JsonProperty(PropertyName = "guardian_id")]
    public int ID { get; set; }

    [JsonProperty(PropertyName = "guardian_name")]
    public string Name { get; set; }            // <-- This
}


class Patient
{

    [JsonProperty(PropertyName = "patient_id")]
    public int ID { get; set; }

    [JsonProperty(PropertyName = "patient_name")]
    public string Name { get; set; }            // <-- This
}
Şöyle yaparız.
string json = @"[{'guardian_id':'1453','guardian_name':'Foo Bar','patient_id':'938',
  'patient_name':'Foo Bar'}]";
var guardians = JsonConvert.DeserializeObject<List<Guardian>>(json);
var patients = JsonConvert.DeserializeObject<List<Patient>>(json);
Örnek
Şöyle yaparız.
string json = File.ReadAllText(@"filepath\Basic.json");
MyObject myObject = JsonConvert.DeserializeObject<MyObject>(json);
Eğer istersek dynamic ile şöyle yaparız.
var m = JsonConvert.DeserializeObject<dynamic>(html);
Deserialize metodu - str + Type olarak Array
Şöyle yaparız.
Foo[] foos = JsonConvert.DeserializeObject<Foo[]>(str);
Deserialize metodu - str + Type olarak Dictionary
Eğer alan ismi C# diline uygun değilse Dictionary kullanılabilir. Elimizde şöyle bir json olsun. 8 sınıf alanı olamaz.
{
8: 
  [
    data, 
    data2, 
    data3, 
    data4
  ]
}
Şöyle yaparız.
var result = JsonConvert
  .DeserializeObject<Dictionary<int, IEnumerable<string>>>(resultsString);
veya şöyle yaparız.
var result = JsonConvert
  .DeserializeObject<Dictionary<int, IEnumerable<Foo>>>(resultsString);
Nesneye erişmek için şöyle yaparız.
result[8].First();
Deserialize metodu - str + Type olarak List
Elimzde şöyle bir json olsun.
[{"Yes":"52","No":"41"}]
Şöyle bir sınıf olsun.
public class Survey
{
  [JsonProperty("Yes")]
  public string Yes { get; set; }

  [JsonProperty("No")]
  public string No { get; set; }
}
Şöyle yaparız.
var items = JsonConvert.DeserializeObject<List<Survey>>(jsonstr);
Deserialize metodu - str + JsonSerializerSettings
Şöyle yaparız.
var settings = new JsonSerializerSettings  = ...; 

DataTable tbl1 = JsonConvert.DeserializeObject<DataTable>(json, settings);
Deserialize metodu - JsonConverter
Eğer istersek kendi dönüştürücü sınıfımızı da kullanabiliriz.
var customConverter = new JSONSanitizer();// create a custom converter
obj = JsonConvert.DeserializeObject<T>(json, customConverter);
Kendi dönüştürücü sınıflarımızı bir dizi gibi verebiliriz.
var converters = new JsonConverter[]
{
    new CustomConverter(),
};
var dict = JsonConvert.DeserializeObject<T>(json, converters);
Serialize metodu
Verilen herhangi bir nesnesi string'e çevirmek için şöyle yaparız.
DataTable dt = ...
string json = JsonConvert.SerializeObject(dt);  
Serialize metodu - Formatting
Şöyle yaparız.
string json = JsonConvert.SerializeObject(foo, Formatting.Indented);

Hiç yorum yok:

Yorum Gönder