【问题标题】:Deserialize JSON not working with newtonsoft.json反序列化 JSON 不适用于 newtonsoft.json
【发布时间】:2017-11-12 11:28:53
【问题描述】:

我有一个如下的 json 字符串,我正在使用反序列化到我的类对象中,但我不能,这是我的 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; }
}

我正在使用 NewtonSoft 库将该 json 反序列化为我的类对象,但出现以下错误:

{"无法反序列化当前的 JSON 对象(例如 {\"name\":\"value\"}) 输入类型 'System.Collections.Generic.List`1[ParseSoapEnveloperReqRes.LowFareSearchRsp]' 因为该类型需要一个 JSON 数组(例如 [1,2,3])来反序列化 正确。\r\n要修复此错误,请将 JSON 更改为 JSON 数组 (例如 [1,2,3])或更改反序列化类型,使其成为正常的 .NET 类型(例如,不是像整数这样的原始类型,也不是集合 可以从 JSON 反序列化的数组或列表等类型 目的。 JsonObjectAttribute 也可以添加到类型中来强制它 从 JSON 对象反序列化。\r\nPath 'TraceId',第 2 行,位置 12."}

这是我反序列化 json 字符串的代码:

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

我已经搜索了整个互联网,但找不到解决方案。请帮助。谢谢。

【问题讨论】:

    标签: c# json serialization json.net


    【解决方案1】:

    您的 JSON 字符串表示一个对象而不是数组更改反序列化代码如下:

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

    【讨论】:

      【解决方案2】:

      您的 JSON 不代表 List&lt;LowFareSearchRsp&gt;,而是代表 LowFareSearchRsp

      【讨论】:

      • 是的,我知道,但是在我的LowFareSearchRsp 类中,有一个对象FlightDetailsList,它有一个List&lt;FlightDetails&gt;.. 那我该如何反序列化它
      • 你正试图将整个东西反序列化为List&lt;LowFareSearchRsp&gt;,但结构的最外层是一个映射;不是数组。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-03-10
      • 1970-01-01
      相关资源
      最近更新 更多