2017-11-12 11 views
0

で作業していない、ここに私のJSONがある:デシリアライズJSON私は私は私のクラスのオブジェクトにデシリアライズを使用していますが、私はできない、以下のようにJSON文字列を持っているnewtonsoft.json

{ 
    "TraceId": "24bf6a01-5d8f-4959-9173-20600a04b738", 
    "TransactionId": "AFC48AE50A076477C3E069296AC3F884", 
    "ResponseTime": "1672", 
    "DistanceUnits": "MI", 
    "CurrencyType": "GBP", 
    "xmlns:air": "http://www.travelport.com/schema/air_v42_0", 
    "air:FlightDetailsList": { 
      "air:FlightDetails": [ 
       { 
        "Key": "hx5kk+3R2BKAuFzqAAAAAA==", 
        "Origin": "DXB", 
        "Destination": "LHE", 
        "DepartureTime": "2017-12-10T13:55:00.000+04:00", 
        "ArrivalTime": "2017-12-10T17:55:00.000+05:00", 
        "FlightTime": "180", 
        "TravelTime": "180", 
        "Equipment": "320", 
        "OriginTerminal": "1", 
        "DestinationTerminal": "M" 
       }, 
       { 
        "Key": "hx5kk+3R2BKAwFzqAAAAAA==", 
        "Origin": "LHE", 
        "Destination": "DEL", 
        "DepartureTime": "2017-12-20T12:15:00.000+05:00", 
        "ArrivalTime": "2017-12-20T14:10:00.000+05:30", 
        "FlightTime": "85", 
        "TravelTime": "690", 
        "Equipment": "ATR", 
        "OriginTerminal": "M", 
        "DestinationTerminal": "3" 
       }, 
       { 
        "Key": "hx5kk+3R2BKAyFzqAAAAAA==", 
        "Origin": "DEL", 
        "Destination": "DXB", 
        "DepartureTime": "2017-12-20T20:25:00.000+05:30", 
        "ArrivalTime": "2017-12-20T22:45:00.000+04:00", 
        "FlightTime": "230", 
        "TravelTime": "690", 
        "Equipment": "788", 
        "OriginTerminal": "3", 
        "DestinationTerminal": "1" 
       } 
      ] 
     } 
} 

だから私LowFareSearchRsp私のクラスに変換したいとそのFlightDetailsクラスも以下に示します。

public class LowFareSearchRsp 
{ 
    public string TraceId { get; set; } 
    public string TransactionId { get; set; } 
    public string ResponseTime { get; set; } 
    public string DistanceUnits { get; set; } 
    public string CurrencyType { get; set; } 
    public string air { get; set; } 
    public FlightDetailsList FlightDetailsList { get; set; } 
} 

public class FlightDetailsList 
{ 
    public List<FlightDetails> FlightDetails { get; set; } 
} 

public class FlightDetails 
{ 
    public string Key { get; set; } 
    public string Origin { get; set; } 
    public string Destination { get; set; } 
    public DateTime Departure { get; set; } 
    public DateTime ArrivalTime { get; set; } 
    public string FlightTime { get; set; } 
    public string TravelTime { get; set; } 
    public string Equipment { get; set; } 
    public string OriginTerminal { get; set; } 
    public string DestinationTerminal { get; set; } 
} 

と私は私のクラスのオブジェクトにそのJSONをデシリアライズするNewtonSoftライブラリを使用しますが、次のエラーを取得しています:

をここで

{"Cannot deserialize the current JSON object (e.g. {\"name\":\"value\"}) into type 'System.Collections.Generic.List`1[ParseSoapEnveloperReqRes.LowFareSearchRsp]' because the type requires a JSON array (e.g. [1,2,3]) to deserialize correctly.\r\nTo fix this error either change the JSON to a JSON array (e.g. [1,2,3]) or change the deserialized type so that it is a normal .NET type (e.g. not a primitive type like integer, not a collection type like an array or List) that can be deserialized from a JSON object. JsonObjectAttribute can also be added to the type to force it to deserialize from a JSON object.\r\nPath 'TraceId', line 2, position 12."}

は、JSON文字列をデシリアライズするために私のコードです:

var LowFareSearchRsps = JsonConvert.DeserializeObject<List<LowFareSearchRsp>>(jsonString); 

はI'heは全体のインターネットを検索していたが、これの解決策を見つけることができません。親切に助けてください。ありがとう。

答えて

2

あなたのJSON文字列は以下の通りであることをオブジェクトではない配列の変更deserilizeコードを表す:

var LowFareSearchRsps = JsonConvert.DeserializeObject<LowFareSearchRsp>(jsonString); 
2

JSONはList<LowFareSearchRsp>ではなく、LowFareSearchRspを表します。

+0

うん、私は知っているが、私の 'LowFareSearchRsp'クラスで、あるオブジェクト' FlightDetailsList'があり、 'List ' .. ..それを逆直列化できますか? –

+0

全体を 'List 'にデシリアライズしようとしていますが、構造体の最も外側の部分はマップです。配列ではありません。 – fuglede

関連する問題