IEnumerable uygulayan bazı özel türlerin mutlaka yedek koleksiyonları bulunmuyor. Dinamik olarak üretilebilirler, örneğin 'verim' veya LINQ kullanarak. Ben Json.NET varsayılan serileştirme her bir değeri numaralandırmak ve bir JavaScript dizide değerleri (İstemediğim olan) depolamak için olduğunu keşfettilerJson.Net'te IEnumerable türleri için varsayılan JavaScript dizisi serileştirmesini nasıl atlarım?
public class SOJsonExample
{
public class MyCustomEnumerable : IEnumerable<KeyValuePair<int,float>>
{
public List<int> Keys { get; set; }
public List<float> Values { get; set; }
public MyCustomEnumerable()
{
Keys = new List<int> { 1, 2, 3 };
Values = new List<float> { 0.1f, 0.2f, 0.3f };
}
public IEnumerator<KeyValuePair<int, float>> GetEnumerator()
{
var kvps =
from key in Keys
from value in Values
select new KeyValuePair<int, float>(key, value);
return kvps.GetEnumerator();
}
IEnumerator IEnumerable.GetEnumerator()
{
return this.GetEnumerator();
}
}
}
: İşte bir örnek. Varsayılan desperizer daha sonra, koleksiyonun düzenlenemediği için serileştirme başarısız olur. Bu durumlarda, Json.NET'in varsayılan JavaScript dizisi serileştirmesini atlamasını ve sadece sınıfın üyelerini saklamasını istiyorum.
Tek istediğim anahtarlarım ve değerlerim - bunu yapmak için herhangi bir kısayol var mı, yoksa kendi özel seri hale getiricimi mi uygulamak zorundayım?
this ve this adreslerinden hangileri tam olarak benim sorum. the documentation da tarandı, ama aradığım şeyi bulamadım (belki de yanlış yere baktım).
(Düzenleme # 1 - Geliştirilmiş netlik)
(# 2 Düzen - Kendi sorumu yanıtladı ... aşağıya bakınız) Kendi sorumu yanıtladı
Bu sayfa 'JsonObject' ve diğer özellikler için açıklamaları vardır. http://www.newtonsoft.com/json/help/html/SerializationAttributes.htm – kmc059000