C#JsonConvert.DeserializeObject使用null填充列表

时间:2017-07-14 05:03:59

标签: c# json deserialization

我有一个名为LatLong的课程,它存储了两个strings,一个latitudelongitude。我有另一个名为LatLongs的类,它是LatLong

类型的列表
public class LatLongs
{
    public List<LatLong> latlongs { get; set; }
    public string location_name { get; set; }
}

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

最后,我有另一个名为Locations的类,其中包含一个名为JSON的{​​{1}}字符串

JSON字符串有两个字段geofence_coordinateslatitude,用于在SQL服务器上存储这些值。 JSON字符串如下所示:

longitude

以下是我的代码无法正常运行的地方。我有一个名为[ { " latitude ":"-34.95771393255739", " longitude ":"138.46961975097656" }, { " latitude ":"-34.9520861634788", " longitude ":"138.57330322265625" }, { " latitude ":"-35.00947127349485", " longitude ":"138.50017547607422" }, { " latitude ":"-35.00806525651258", " longitude ":"138.57467651367188" } ] 的{​​{1}}类型列表。我创建了一个Locations,我打算用我的JSON坐标填充,但目前JSON无法正常工作并且正在被馈送coords

List<LatLongs>

我使用null错了吗?

1 个答案:

答案 0 :(得分:2)

您的JSON属性名称包含开头和结尾的空格:

" latitude ":"-35.00947127349485"  
 ^        ^  
 |        |
 here and here

Json.NET不会通过修剪空格自动将JSON属性与其名称中的空格绑定到c#属性。由于c#标识符不能包含空格字符,因此您需要从How can I parse a JSON string that would cause illegal C# identifiers?中选择一种可能性,例如使用[JsonProperty]属性标记您的属性:

public class LatLong
{
    [JsonProperty(" latitude ")]
    public string latitude { get; set; }
    [JsonProperty(" longitude ")]
    public string longitude { get; set; }
}

示例fiddle