2013-03-27 2 views
0

안녕하세요이asp.net에서 JSON에 직렬화 하시겠습니까?

 [ 
    { 
    "Pinky": 1, 
    "Ponky": "Breakwater Dockk", 

    }, 
    { 
    "Pinky": 2, 
    "Ponky": "Watson Island Dock",  
    }, 

등이

   [WebMethod] 
[ScriptMethod(ResponseFormat = ResponseFormat.Json)] 
public static string Vo_Get(string Action,int ID) 
{ 
    Product p= new Product(); 

    DataSet ds= new DataSet(); 

    p.Action = Action; 
    p.ID= ID; 

    ds= VoGet_Get(obj); 

    **string jsonVesselDetails = JsonConvert.SerializeObject(ds, Formatting.None); 
    return jsonVesselDetails;** 
} 

여기 스피 점점 내 결과처럼 내의 WebMethod을 가지고 있지만 내가 시도 할 때 사용하는 전화

asp.net

에 firsttime에 대한 JSON을 사용하고 있습니다 Ajax 및 결과 테이블에 바인드하려고하면 unexpexted Token U를 테이블에 추가합니다. result.data로 바인딩하려고하면 O를 보냅니다.

GetVessels(data.d); 

즉 패스를 :마지막으로 내가

내 Ajax 호출이

    $.ajax({ 
       type: "POST", 
       contentType: "application/json; charset=utf-8", 
       url: "Voyage.aspx/Vo_Get", 
       data: "{'Action':'Get','ID':'68'}", 
       dataType: "json", 
       success: function (data) { 
        try { 
         alert("getdata! success"); 

         Get(data); 

        } catch (ex) { 
         alert(ex); 
        } 
       }, 
       error: function (msg) { 
        alert("err: " + error); 
       } 
      }); 

+0

에 DateFormathandling을 지정하려고 불을 지르고에서 응답을 볼 수 날짜 필드로 구성되어있는 경우

success: function (data) { var jsonData= data.d; GetVessels(jsonData); } 

갱신

,이 발생할 수 있습니다 d와 같은 것. Coz, asp.net jsonp (JSON with Padding) 보안 목적으로 "d"가있는 json 결과를 –

답변

0

성공 함수에서도 동일한 변수 data을 사용하고있을 수 있습니다. 나는 결과 데이터에서 변경

success: function (result) { 
    try { 
     alert("getdata! success"); 

     GetVessels(result); 

     //Rebuild the table 
     //BuildVesselTaggerInfo(); 

    } catch (ex) { 
     alert(ex); 
    } 
}, 

참고 다음을 사용해보십시오.

0

내가 GetVessels가 기대 알고 있지만하지 않는 것입니다, 문제는 직렬화 함께 발견 전체 응답 객체가 아닌 실제 데이터

+0

예 이러한 값도 제공하지 않으면 해당 오류가 발생합니다. –

0

먼저 JSON의 종류 또는 GetVessles 방법이 기대하는 배열 구조를 확인하십시오.

VoyageVessel_Get 메서드의 JSON 응답을 직접 입력하거나 수동으로 구성하여이 작업을 수행 할 수 있습니다. 즉

var data= [ 
{ 
     "TerminalID": 1, 
     "TerminalName": "Breakwater Dockk", 
     "PortID": 1, 
     "PortName": "Swire Pacific Offshore", 
     "Column1": "08/03/13", 
     "Column2": "16/03/13", 
     "ServiceID": 2 
    }, 
    { 
     "TerminalID": 2, 
     "TerminalName": "Watson Island Dock", 
     "PortID": 2, 
     "PortName": "Keppel Offshore", 
     "Column1": "20/03/13", 
     "Column2": "23/03/13", 
     "ServiceID": 2 
    }]; 

    GetVessels(data); 

귀하의 GetVessels이이 작품에 적합한 지보십시오. 그것이 필요한 구조가 무엇인지 알아낼 수 없다면 (당신 만이 할 수 있습니다), 그것을 구성하십시오.

두 번째로 ASP.NET Web-Service:success의 응답에 직접 액세스 할 수 없습니다. 이 같은

액세스합니다 : 개체가 Serialization

JsonSerializerSettings microsoftDateFormatSettings = new JsonSerializerSettings 
      { 
       DateFormatHandling = DateFormatHandling.MicrosoftDateFormat 
      }; 
string serializedObject= Newtonsoft.Json 
        .JsonConvert 
        .SerializeObject(dsVoyages, microsoftDateFormatSettings); 
+0

WebMethod Serialization이 올바른지 여부 형식 ... iam이 거기에서 prob를 얻는 것에 따라 나는 바뀌어야한다라고 희망한다 –

+0

예, 그것은 좋아 보인다. 직렬화시 오류가 있습니까? 나는 진술서가 나오기 전에 무슨 뜻인가? 또한 데이터 집합에 날짜/시간 필드가 표시되고 DateFormatHandling을 지정하려고합니다. 내 코드 업데이트 기다려 –

관련 문제