0

JavascriptSerializer を使用して、.NET で JSON を逆シリアル化しようとしています。私が使用している 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)

ただし、これにより、FlightResults 型は配列の逆シリアル化でサポートされていないというメッセージが表示されます。FlightResults のリストを継承するクラスを作成しようとしましたが、リストではなく配列として設定しようとしましたが、すべて同じ例外が発生します。

ここで何か不足していますか?

4

1 に答える 1

0

flight_inとを配列に変更するとflight_out機能します (最後に注意()してください)。

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

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"
}]
于 2012-07-27T09:52:45.297 に答える