2016-08-12 51 views
0

我使用的是Asp.Net,儘管我之前已經完成了一些工作,但是我沒有對json做同樣的工作。根級別的數據無效:試圖反序列化json字符串

我得到的錯誤是在根級別的數據是無效的,我之前見過的使用Xml反序列化的數據。

下面是我對響應文件:

HTTP ResponseCode: 200 
HTTP Status: OK 
HTTP Body: 
{ 
「Status」:」Success」, 
「Response」:」0」, 
「Price」:」10.00」, 
「BuyerId」:999, 
「BuyerContractId」:9999, 
「Detail」:」https://...」 
} 

我使用Web客戶端來獲取數據回:

response = wc.UploadString(info.Endpoint, info.Data); 

「響應」是一個字符串。我用這個方法來反序列化:

public static T JsonResponse<T>(string response) 
     where T : class 
    { 
     var s = new DataContractJsonSerializer(typeof(T)); 

     using (var r = XmlReader.Create(new StringReader(response))) 
     { 
      return (T)s.ReadObject(r); 
     } 
    } 

我試圖反序列化類是:

[DataContract] 
public class ResponseProps 
{ 
    [DataMember(Name = "Status")] 
    public string Status { get; set; } 

    [DataMember(Name = "Response")] 
    public string Response { get; set; } 

    [DataMember(Name = "Price")] 
    public decimal Price { get; set; } 

    [DataMember(Name = "BuyerId")] 
    public string BuyerId { get; set; } 

    [DataMember(Name = "BuyerContractId")] 
    public string BuyerContractId { get; set; } 

    [DataMember(Name = "Detail")] 
    public string Detail { get; set; } 
} 

下面是它怎麼叫:

var cr = XmlHelper.JsonResponse<ResponseProps>(response); 

任何人有任何線索,我哪裏錯了?

回答

2

假設數據來自於JSON格式,我改變了以下 -

public static T JsonResponse<T>(string response) 
    where T : class 
    { 
     return JsonConvert.DeserializeObject<T>(response); 
    } 

現在這個工作細

var q = JsonResponse<ResponseProps>('jsonString'); 
+0

感謝分享是艾米特,但是它確實涉及到另一個包。儘管已經提高了你的答案。 –