我有一个发布到我的WebAPI C#应用程序中的JSON。 我需要进一步处理此JSON并将其中的数据保存到数据库表中。 JSON看起来像这样,并包含纬度和经度:
{
"lattitudes": [
48.75608,
48.75608,
48.75608,
48.75608,
48.75608,
],
"longitudes": [
48.75608,
2.302038,
48.75608,
48.75608,
48.75608,
]
}
请注意,JSON包含两个数字数组,而不是一个具有2个属性的对象数组。
我想做的是将这些“纬度”和“经度”数组写入列表/数组,然后使用SQL“ INSERT”语句将它们分别存储(我知道,这样做很讨厌,但是我不能找不到更聪明的东西。
如何将这个JSON反序列化为两个List<T>
列表以进行进一步处理,如所述?
答案 0 :(得分:2)
要将第一个JSON示例反序列化为纬度/经度对数组,您可以:
Enumerable.Zip
将数组组合成对。因此,如果我们定义以下数据模型:
public class RootObject
{
public List<double> lattitudes { get; set; }
public List<double> longitudes { get; set; }
}
public class LatLong
{
public double Latitude { get; set; }
public double Longitude { get; set; }
}
我们可以如下反序列化您的JSON:
var root = JsonConvert.DeserializeObject<RootObject>(jsonString);
var array = root.lattitudes
.Zip(root.longitudes, (lat, @long) => new LatLong { Latitude = lat, Longitude = @long })
.ToArray();
演示小提琴here。