2012-01-04 205 views
3

我想將下面的json轉換成一個域對象。如何將json字符串反序列化爲域對象?

JSON:

[{"name":"McDonalds","deals":[{"desc":"Onion Rings free with Double Cheese burgers"}],"geometry":{"lat":13.073412,"lng":80.221393}},{"name":"JusSportz","deals":[{"desc":"20% off on Wilson Rackets"}],"geometry":{"lat":13.073231,"lng":80.221181}}] 

型號:

[DataContract] 
    public class Deal 
    { 
     [DataMember(Name="name")] 
     public string Store { get; set; } 

     [DataMember(Name="deals")] 
     public Offer[] Offers {get; set;} 

     [DataMember(Name="geometry")] 
     public GeoCoordinate Location { get; set; } 

    } 

    [DataContract] 
    public class Offer 
    { 
     [DataMember] 
     public string deal; 
    } 

我試過DataContractJsonSerializer是在System.Runtime.Serialization.Json命名空間,顯然有沒有辦法將字符串轉換爲對象。有沒有其他的庫讓我完成這件事?或者有沒有辦法使用這個庫來完成這個任務(通過將Json字符串轉換爲某種中間格式)?

回答

2

下面是如何反序列化JSON回到我的域對象。

using (var reader = new MemoryStream(Encoding.Unicode.GetBytes("YourStringValue"))) 
{ 
    var ser = new DataContractJsonSerializer(typeof(Deal)); 
    return (Deal)ser.ReadObject(reader); 
} 

這是你在找什麼?

+0

我認爲是這樣,我也認爲我可能會轉換一系列交易,而(錯誤地)將其轉換爲交易。我得到一個無效的轉換異常。我試試看,並接受它,如果它的工作 – gprasant 2012-01-05 04:23:49

+0

請確保您反序列化您的所有類具有您的數據合同屬性。如果沒有,您可能會遇到更多的序列化問題。 – 2012-01-06 18:46:42

1

試着改了一下型號:

[DataContract] 
public class Deal 
{ 
    [DataMember(Name="name")] 
    public string Store { get; set; } 

    [DataMember(Name="deals")] 
    public Offer[] Offers {get; set;} 

    [DataMember(Name="geometry")] 
    public GeoCoordinate Location { get; set; } 

} 

[DataContract] 
public class Offer 
{ 
    [DataMember(Name="desc")] 
    public string deal { get; set; } 
} 
+0

我不認爲它與模型的問題。我認爲它顯示即時通訊轉換/解析JSON。 – gprasant 2012-01-05 04:24:44

相關問題