2014-10-30 43 views
0

在C#中,我有一個集合類(FeatureCollection),我想要序列化爲JSON並將其返回給調用者。 Feature類包含5個屬性,但調用者只需要2個。由於我非常關心響應時間和性能,並且由於我旨在最小化所發送數據的大小,所以我想知道是否有方法發送集合的「最小化」版本(修剪不需要的屬性之後),而無需手動實現新的最小化類。之所以我不喜歡創建一個新的最小化類並將其映射到原始類,只是爲了保持我的代碼乾淨整潔。從類集合中序列化選定的屬性

我認爲(這顯然是不工作)的代碼將如下所示:

return JsonConvert.SerializeObject(myFeatureCollection.TrimProperties(typeof(Feature).GetProperties().ToList().Find(property => property.Name == "Property1" || property.Name == "property2"))); 
+0

這是覆蓋Json.Net文檔中:減少串行化JSON尺寸(HTTP:// james.newtonking.com/json/help/?topic=html/ReducingSerializedJSONSize.htm) – 2014-10-30 16:40:15

回答

2

當你使用Json.NET,你可以使用JsonIgnore屬性:

public class Foo 
{ 
    [JsonIgnore] 
    public int Bar { get; set; } 
} 
+0

非常感謝,我會將其標記爲答案。但是,你知道我是否可以在運行時指定'[JsonIgnore]'? – yazanpro 2014-10-30 15:25:44

+0

沒關係,它在這裏:http://blog.mariusschulz.com/2013/04/15/conditionally-serializing-fields-and-properties-with-jsonnet – yazanpro 2014-10-30 15:42:12

1

會使用你的一個匿名類型的工作?

return JsonConvert.SerializeObject(myFeatureCollection.Select(x => new { x.Property1, x.Property2 }));