2017-11-12 3 views
0

ich einen JSON-String haben, wie unten, die ich die deserialize in meine Klasse Objekte verwende aber ich kann nicht hier, mein json .:Deserialize JSON nicht mit newtonsoft.json Arbeits

{ 
    "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" 
       } 
      ] 
     } 
} 

Also ich will in meine Klasse konvertieren LowFareSearchRsp und seine FlightDetails Klasse wird auch weiter unten:

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; } 
} 

und ich bin die NewtonSoft Bibliothek mit, dass json mein Klassenobjekt deserialisieren aber die folgende Fehlermeldung erhalten:

{"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."}

Hier ist mein Code, um die JSON-String deserialisieren:

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

I'he das ganze Internet gesucht hatte, aber die Lösung nicht finden. Freundlich helfen. Vielen Dank.

Antwort

2

Ihr JSON-String repräsentiert ein Objekt keine Array Codeänderung deserilize wie unten zu sein:

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

Ihr JSON repräsentiert keine List<LowFareSearchRsp> sondern eine LowFareSearchRsp.

+0

Ja, ich weiß, aber in meiner 'LowFareSearchRsp' Klasse gibt es ein Objekt' FlightDetailsList', unt 'List ' .. so wie kann ich das deserialize –

+0

Sie versuchen, das gesamte Ding in eine 'List ' zu deserialisieren, aber der äußerste Teil der Struktur ist eine Karte; kein Array. – fuglede