2010-10-16 64 views
2

我真的很新Json,我試圖調用一個Web服務。C#Deserialization Json array without []

當服務返回一個元素的數組dejson字符串爲這個數組是沒有 []。這會在我使用的序列化程序中導致異常。 (我用這一個http://james.newtonking.com/

我的問題很簡單,我可以添加的東西也告訴解串器總是拿這部分的陣列

在我的代碼,我有這個模型類

public class Company : BaseEntity 
{ 
    #region Constructors 
    public Company() 
    { 

    } 

    public Company(int id, string name, string description) 
    { 
     Id = id; 
     Name = name; 
     Description = description; 
    } 
    #endregion 

    #region Properties 
    public int Id { get; set; } 
    public string Name { get; set; } 
    public string Description { get; set; } 
    public List<Industry> IndustryList { get; set;} 
    #endregion 

} 

並且json對於一個行業一個企業

{"company":{"description":"Societe de Google","id":"0","industryList":{"id":"0","name":"Technologies Cool"},"name":"Google Inc."} 

也許,我應該也改變serilizer工具,我開得。 所有工作都會與其他2個或更多元素的列表一起查找,或者如果我更改了行業列表,但有時我會收到多個行業。

謝謝。

+0

你什麼異常? – 2010-10-16 05:00:40

+0

這種行爲對於JSON服務是正常的(我討厭它)。我會說你可以認爲它是你使用的反序列化程序中的一個錯誤 - 也許聯繫反序列化器的創建者?也許它在當前版本中是固定的。 – 2010-10-16 07:29:13

+0

這是我得到的例外。無法將JSON對象反序列化爲類型'System.Collections.Generic.List'1 [StockOverflow.Client.Logic.Models.Entities.Industry]'。 – 2010-10-16 19:50:15

回答

3

使類

[DataContract] 
public class Company : BaseEntity 
{ 
    #region Constructors 
    public Company() 
    { 

    } 

    public Company(int id, string name, string description) 
    { 
     Id = id; 
     Name = name; 
     Description = description; 
    } 
    #endregion 

    #region Properties 
    [DataMember] 
    public int Id { get; set; } 
    [DataMember] 
    public string Name { get; set; } 
    [DataMember] 
    public string Description { get; set; } 
    [DataMember] 
    public List<Industry> IndustryList { get; set;} 
    #endregion 

} 
+1

此解決方案不起作用,問題不在於deseriazaltion本身。這是json不包含行業列表的[],因爲它們在列表中只有一個元素。所以在反序列化過程中,我得到了這個異常:無法將JSON對象反序列化爲類型'System.Collections.Generic.List'1 [StockOverflow.Client.Logic.Models.Entities.Industry]'。 – 2010-10-16 19:52:25