2012-07-27 5 views
0

JavascriptSerializer를 사용하여 .NET에서 일부 JSON을 deserialise하려고합니다. 내가 사용개체 목록에 Deserialise JSON 배열

[{ 
"dep_date": "2012-07-12", 
"tax": 141.53, 
"currency": "GBP", 
"vcr": "LX", 
"dst_apt": "PRG", 
"flight_in": [ 
    [ 
     { 
      "depApt": "PRG", 
      "dstApt": "FRA", 
      "depTime": "2012-07-15 19:05:00", 
      "vcr": "LH", 
      "carrier": "LH", 
      "arrTime": "2012-07-15 20:15:00", 
      "ocr": "LH", 
      "flightNo": "1401" 
     }, 
     { 
      "depApt": "FRA", 
      "dstApt": "LHR", 
      "depTime": "2012-07-15 21:30:00", 
      "vcr": "LH", 
      "carrier": "LH", 
      "arrTime": "2012-07-15 22:10:00", 
      "ocr": "LH", 
      "flightNo": "922" 
     } 
    ] 
], 
"price": 114.0, 
"dst_city": "PRG", 
"dep_apt": "LCY", 
"flight_out": [ 
    [ 
     { 
      "depApt": "LCY", 
      "dstApt": "ZRH", 
      "depTime": "2012-07-12 08:25:00", 
      "vcr": "LX", 
      "carrier": "LX", 
      "arrTime": "2012-07-12 11:15:00", 
      "ocr": "LX", 
      "flightNo": "451" 
     }, 
     { 
      "depApt": "ZRH", 
      "dstApt": "PRG", 
      "depTime": "2012-07-12 12:35:00", 
      "vcr": "LX", 
      "carrier": "LX", 
      "arrTime": "2012-07-12 13:55:00", 
      "ocr": "2L", 
      "flightNo": "1486" 
     } 
    ] 
], 
"ret_date": "2012-07-15", 
}] 

실제 코드/클래스는 다음과 같습니다 :

<Serializable()> _ 
    Public Class FareResult 

     Public Property dep_date As String 
     Public Property tax As String 
     Public Property currency As String 
     Public Property vcr As String 
     Public Property dst_apt As String 
     Public Property flight_in As List(Of FlightResult) 
     Public Property price As String 
     Public Property dst_city As String 
     Public Property dep_apt As String 
     Public Property flight_out As List(Of FlightResult) 
     Public Property ret_date As String 

    End Class 

    <Serializable()> _ 
    Public Class FlightResult 

     Public Property depApt As String 
     Public Property dstApt As String 
     Public Property depTime As String 
     Public Property vcr As String 
     Public Property carrier As String 
     Public Property arrTime As String 
     Public Property ocr As String 
     Public Property flightNo As String 

    End Class 

Dim jss As New JavaScriptSerializer 
Dim oFareResults As Generic.List(Of FareResult) = jss.Deserialize(Of List(Of FareResult))(sJSON) 

그러나 이것은 단지 나에게 유형을 말하는 메시지를 제공합니다 다음과 같이 내가 함께 일하고 있어요 JSON의 예는 FlightResults는 배열의 비 직렬화에 지원되지 않습니다. FlightResults 목록을 상속하는 클래스를 만들려고했지만 목록 대신 배열로 설정하려고 시도했지만 모두 동일한 예외가 발생합니다.

여기에 뭔가가 있습니까?

답변

0

배열 작업으로 flight_inflight_out을 변경합니다 (끝에 () 참고).

Public Property flight_in As List(Of FlightResult)() 
Public Property flight_out As List(Of FlightResult)() 

JSON에 구문 분석 오류가 있습니다 (validator 통해 실행). 끝에있는 쉼표를 제거하십시오. 다음은 작동하는 고정 사본입니다.

[{ 
"dep_date": "2012-07-12", 
"tax": 141.53, 
"currency": "GBP", 
"vcr": "LX", 
"dst_apt": "PRG", 
"flight_in": [ 
    [ 
     { 
      "depApt": "PRG", 
      "dstApt": "FRA", 
      "depTime": "2012-07-15 19:05:00", 
      "vcr": "LH", 
      "carrier": "LH", 
      "arrTime": "2012-07-15 20:15:00", 
      "ocr": "LH", 
      "flightNo": "1401" 
     }, 
     { 
      "depApt": "FRA", 
      "dstApt": "LHR", 
      "depTime": "2012-07-15 21:30:00", 
      "vcr": "LH", 
      "carrier": "LH", 
      "arrTime": "2012-07-15 22:10:00", 
      "ocr": "LH", 
      "flightNo": "922" 
     } 
    ] 
], 
"price": 114.0, 
"dst_city": "PRG", 
"dep_apt": "LCY", 
"flight_out": [ 
    [ 
     { 
      "depApt": "LCY", 
      "dstApt": "ZRH", 
      "depTime": "2012-07-12 08:25:00", 
      "vcr": "LX", 
      "carrier": "LX", 
      "arrTime": "2012-07-12 11:15:00", 
      "ocr": "LX", 
      "flightNo": "451" 
     }, 
     { 
      "depApt": "ZRH", 
      "dstApt": "PRG", 
      "depTime": "2012-07-12 12:35:00", 
      "vcr": "LX", 
      "carrier": "LX", 
      "arrTime": "2012-07-12 13:55:00", 
      "ocr": "2L", 
      "flightNo": "1486" 
     } 
    ] 
], 
"ret_date": "2012-07-15" 
}] 
+0

불행히도, 이것은 아무 것도하지 않는 것 같습니다. SGEN이라는 파일에서 약 25 개의 오류가 발생합니다. "열 수 없습니다. 이름이 변경되었거나 삭제되었거나 이동되었습니다." 왜 그런지 완전히 모르겠습니다. flight_in()으로 변경하면 (Of FlightResult) List가 작동하지 않습니다. – user1546281

+1

@ user1546281 JSON에 구문 분석 오류가있었습니다. 유효한 JSON으로 답변을 업데이트했습니다. 그것으로 시도해보십시오. 문제가 * 해결됩니다. – ThinkingStiff