【问题标题】:Newtonsoft.Json.JsonSerializationException: 'Cannot deserialize the current JSON objectNewtonsoft.Json.JsonSerializationException: '无法反序列化当前 JSON 对象
【发布时间】:2018-05-31 11:38:28
【问题描述】:

错误:

Newtonsoft.Json.JsonSerializationException: '无法反序列化 当前 JSON 对象(例如 {"name":"value"})转换为类型 'System.Collections.Generic.List`1[MFBDCP.HotelList+geolocation]' 因为该类型需要一个 JSON 数组(例如 [1,2,3])来反序列化 正确。

我的代码:

HotelResponse myDetails = JsonConvert.DeserializeObject<HotelResponse>(final);

父类:

public class HotelResponse
{
   public List<hotels> hotels { get; set; } = new List<hotels>();
   public DateTime checkin { get; set; }
}

儿童班:

public class hotels
{
   public string hotel_code { get; set; }
   public List<geolocation> geolocation { get; set; }
}

子子类:

public class geolocation
{
   public string longitude { get; set; }
   public string latitude { get; set; }
}

请告诉我如何定义嵌套列表

【问题讨论】:

  • 显示你的 JSON。
  • 请遵循 C# 命名约定。属性名称应以大写字母开头。
  • 此外,hotels 应该是属性名,而不是类名。那应该是单数和 PascalCase:Hotel.
  • 你能用简单的英语说明你在这里想要完成什么,你的输入是什么以及你期望的行为是什么。只是粘贴代码和堆栈跟踪并不是很清楚

标签: c# json-deserialization


【解决方案1】:

你可能输入的字符串有错误,final。错误消息表明其中一个数组(列表)的格式不正确。由于您有嵌套列表,因此可能是内部数组或外部数组的格式不正确。

我要做的是,以编程方式创建一个实际的 HotelResponse 对象,其中包含与 final 相同的属性值。然后,使用 JsonConvert.SerializeObject() 查看 Json 应该是什么样子。通过比较 JsonConvert.SerializeObject 和 final 的结果,应该可以知道哪里出了问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-16
    • 1970-01-01
    • 2021-12-03
    • 1970-01-01
    相关资源
    最近更新 更多