json.net (Newtonsoft'un JsonSerializer) yazılımını kullanıyorum. Aşağıdaki gereksinimleri karşılamak için serileştirmeyi özelleştirmem gerekiyor:Newtonsoft JsonSerializer - Küçük harf kullanımı ve sözlükler
- Özellik adları küçük harfle başlamalıdır.
- Sözlük, mülk adları için anahtarların kullanılacağı jsonp içine serileştirilmelidir. LowerCase kuralı, sözlük tuşları için geçerli değildir.
var product = new Product(); procuct.Name = "Product1"; product.Items = new Dictionary<string, Item>(); product.Items.Add("Item1", new Item { Description="Lorem Ipsum" });
içinde seri hale gerekir: örneğin
özellik adı "adıyla" içine serializes, ancak anahtar Item1 "Öğe1" içine serializes olduğunu
{
name: "Product1",
items : {
"Item1": {
description : "Lorem Ipsum"
}
}
}
haber;
Özellik adlarını serileştirmek için CustomJsonWriter'ı oluşturmaya çalıştım, ancak aynı zamanda dikte anahtarlarını da değiştirir.
public class CustomJsonWriter : JsonTextWriter
{
public CustomJsonWriter(TextWriter writer) : base(writer)
{
}
public override void WritePropertyName(string name, bool escape)
{
if (name != "$type")
{
name = name.ToCamelCase();
}
base.WritePropertyName(name, escape);
}
}
Bu bir ihlal değildir. Veri serileştirme ile uğraşırken gerekli olabilecek bir haritalama sağlar. Bunun nedeni, C# değişken adları ile temel serileştirme formatı arasındaki uyumsuzluğa bağlıdır - JSON ile sınırlı değildir. – Metro
, eşlemeyi belirlemek için kullanılabilecek bir kural veya kural varsa, o zaman DRY – Liero
ihlalidir. DRY ilkesi "Her bilgi parçasının bir sistem içinde tek, kesin, otoriter bir temsili olması gerekir." Bir sistemin herhangi bir tek elemanının, mantıksal olarak birbiriyle ilgisiz diğer unsurlarda bir değişiklik gerektirmediği gibi, mantıksal olarak ilişkili olan tüm unsurlar, öngörülebilir ve tekdüze bir şekilde değişmektedir ve dolayısıyla senkronize tutulmaktadır. " – Liero