Kullanım
Şöyle yaparız.
Bir sınıf tanımlarız.
Şöyle yaparız.
Şöyle yaparız.
Şöyle yaparız.
var settings = new JsonSerializerSettings
{
NullValueHandling = NullValueHandling.Ignore,
ReferenceLoopHandling = ReferenceLoopHandling.Ignore
};
string json = "...";
dynamic d = JsonConvert.DeserializeObject<ItemB>(json, settings);
Converters AlanıBir sınıf tanımlarız.
/// <summary>
/// Converts a <see cref="DataTable"/> to and from JSON.
/// </summary>
public class TypeInferringDataTableConverter :
Newtonsoft.Json.Converters.DataTableConverter
{
public override object ReadJson(JsonReader reader, Type objectType,
object existingValue, JsonSerializer serializer)
{
...
}
...
}
Şöyle yaparız.var settings = new JsonSerializerSettings {
Converters = new[] { new TypeInferringDataTableConverter() } };
DataTable tbl1 = JsonConvert.DeserializeObject<DataTable>(jsonTable1, settings);
Error AlanıŞöyle yaparız.
var json = "{'sessionId': 's0j1', 'commandId': 19, 'options': invalidValue}";
var settings = new JsonSerializerSettings
{
Error = delegate(object sender, ErrorEventArgs args)
{
args.ErrorContext.Handled = true;
}
});
var result = JsonConvert.DeserializeObject(json, settings);
NullValueHandling AlanıŞöyle yaparız.
var settings = new JsonSerializerSettings
{
NullValueHandling = NullValueHandling.Ignore,
ReferenceLoopHandling = ReferenceLoopHandling.Ignore
};
TypeNameHandling Alanı - Serialization
Açıklaması şöyle.
When we de/serialize with setting TypeNameHandling = TypeNameHandling.All, the .NET type name will always be included when serializing.Şöyle yaparız.
var settings = new JsonSerializerSettings()
{
TypeNameHandling = TypeNameHandling.All
};
Şöyle yaparız.
var dict = new Dictionary<string, object>()
{
{ "RandomBooleans",...}
};
var json = JsonConvert.SerializeObject(dict, settings);
Kullanılan C# type bilgisini de json çıktısına dahil eder. Çıktı olarak şunu alırız
{
"$type":"SSystem.Collections.Generic.Dictionary...",
"RandomBooleans":{...}
}
TypeNameHandling Alanı - Deserialization
Elimizde soyut sınıf olsun.
[Serializable]
public class MyConcreteClass : MyAbstractClass
{
public string MyProperty { get; set; }
}
[Serializable]
public abstract class MyAbstractClass { }
Deserialize ederken şu hatayı alırız.
Newtonsoft.Json.JsonSerializationException: Could not create an instance of type MyAbstractClass. Type is an interface or abstract class and cannot be instantiated.
Bundan kurtulmak için şöyle yaparız.var settings = new JsonSerializerSettings()
{
TypeNameHandling = TypeNameHandling.All
};
Hiç yorum yok:
Yorum Gönder