2013-11-14 159 views
3

我有一個類型爲Facility的列表,如下所示。將列表<CustomObject>轉換爲JSON

我想獲取包含帶參數的對象並將該數據序列化爲json的列表。

我目前的實現是我回來,看起來像一個列表的問題:[],[],[],[],[] ....但我的對象在它的數據,我可以訪問像這樣:_facility[0].FacilityName_facility[0].FacilityId。但是,當我序列化這我沒有得到這些價值觀。

如何向下鑽取以獲取此數據並對其進行序列化?

Facility.cs

被稱爲填充該基金類

public async Task<string> FacilitiesAsync() 
    { 
     ViewBag.SyncOrAsync = "Asynchronous"; 
     var service = new FacilitiesService(); 

     this._facilities = new List<Facility>(); 

     _facilities = await service.GetFacilitiesBySourceDbAsync("param"); 

     string json = ""; 

     for (int i = 0; i < _facilities.Count; i++) 
     { 
      json += JsonConvert.SerializeObject(_facilities[i].FacilityName); 
     } 

     return json; 
    } 

現在我看到在我的提示框的JSON在我的jQuery的完整功能

public class Facility : List<Facility> 
{ 
    [Required] 
    [Display(Name = "Facility")] 
    public string FacilityName { get; set; } 
    public string FacilityIdSource { get; set; } 

    public Facility() 
    { 
     // Default Constructor 
    } 

    public Facility(string facilityName, string facilityIdSource) 
    { 
     this.FacilityName = facilityName; 
     this.FacilityIdSource = facilityIdSource; 
    } 
} 

代碼。如何將這個數組賦給availableTags?

<script type="text/javascript"> 
    $(function() { 
    var result = null; 
    $.ajax({ 
     beforeSend: function() { 
      alert("Testing"); 
     }, 
     url: "FacilitiesAsync", 
     success: function (data) { 
      result = data; 
     }, 
     complete: function() { 
      alert(result); 
     } 
    }); 
}); 

$(function() { 
    var availableTags = [ 
     // Place results from JSON here 
    ]; 
    $("#tags").autocomplete({ 
     source: availableTags 
    }); 
</script> 
+0

作爲調試步驟,嘗試使用JavaScriptSerializer。你有預期的結果嗎? –

+10

'設施:列表'?這讓我的大腦受到傷害。 :( –

+1

(但嚴重的是,我沒有看到你如何明智地將這樣的類序列化成JSON;你可能有一個'Facility'類和一個'List Children'屬性) –

回答

0

默認序列化程序不會對實現ICollection的對象的屬性進行序列化。

從文章介紹XML序列化:

http://msdn.microsoft.com/en-us/library/182eeyhh(v=vs.110).aspx

項目可序列化

以下項目可使用XmlSerializer類序列化:

  • 公共讀/寫公共類的屬性和字段。
  • 實現ICollection或IEnumerable的類。

注意:只有集合是序列化的,而不是公共屬性。

  • XmlElement對象。
  • XmlNode對象。
  • DataSet對象。

DataContractSerializer應該正確處理這個問題。

+0

所以我應該改變我的類不從列表<>繼承?代碼請... –

+0

對於序列化,如果將集合包含爲只讀屬性,只要符合您的接口要求,我會盡量使它更簡單。 –