2016-08-12 3 views
0

저는 Asp.Net을 사용하고 있습니다. 이전에 XML을 deseriaizing하는 일부 작업을 수행했지만 json과 동일한 작업을 수행하지 않았습니다.루트 수준의 데이터가 유효하지 않습니다. json 문자열을 deserialize하려고합니다.

오류가 발생합니다. 루트 수준의 데이터가 유효하지 않습니다. 이전에 XML 비 직렬화로 본 적이 있습니다. 내가 다시 데이터를 얻을 수있는 웹 클라이언트를 사용하고

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

:

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

감사를 작동합니다. 그래도 대답을 upvoted. –

관련 문제