2014-12-03 11 views
0

C#에서 나는 JSON 응답을받을 :C#을 어떻게 직렬화 JSON 배열

var httpResponse = (HttpWebResponse)httpWebRequest.GetResponse(); 
using (var streamReader = new StreamReader(httpResponse.GetResponseStream())) 
{ 
    var result = streamReader.ReadToEnd(); 
    ... 
} 

결과의 값은 다음과 같습니다 이제

"[\"[{\\\"retcode\\\":0}]\"]" 

난 내 객체로를 역 직렬화 할 경우 :

var myobj = js.Deserialize<List<CustomerReturnCode>>(result); 

나는 다음과 같은 오류 얻을 :

"Cannot convert object of type 'System.String' to type 'CustomerReturnCode'"} 

가 어떻게 응답 유형을 역 직렬화 할 수 있습니다? (배열입니다.이 예제에는 하나의 항목 만 있습니다.)

+0

나는 System.Text.RegularExpressions.Regex.Unescape (result)를 시도했다. 하지만 deserialize 때 오류가 발생했습니다 : { "잘못된 배열이 전달되었습니다 ',', '(6) : [\ {[\"retcode \ ": 0]] \"] "} – Tom

답변

-1
var json="[\"[{\\\"retcode\\\":0}]\"]"; 
    Dynamic CRC= new System.Web.Script.Serialization.JavaScriptSerializer().Deserialize<CustomerReturnCode >(json); 
+0

응답에 여러 항목이 포함되어 있으면 ? (배열입니다) – Tom

+0

어쨌든 코드에서 다음 오류가 발생합니다 : 형식 'CustomerReturnCode'배열의 deserialization에 대해 지원되지 않습니다. " – Tom

0

웹 서비스에서 배열 배열을 반환합니다. JavascriptSerializer가 그 작업을 수행하는 방법을 모르기 때문에 직접 역 직렬화 할 수 없습니다.

here에서 JArray를 사용하여 사용자 정의 JsonConverter 클래스를 사용하여 수행 할 수 있습니다.

웹 서비스를 수정할 수있는 권한이 있다면 다른 형식으로 개체를 반환하도록 변경하십시오.