我有一个 JSON,我将其发布到我的 WebAPI C# 应用程序。 我需要进一步处理这个 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>
按描述列出待进一步处理的列表?
最佳答案
要将第一个 JSON 示例反序列化为纬度/经度对数组,您可以:
- 使用 How to auto-generate a C# class file from a JSON object string 中提到的代码生成工具之一生成相应的数据模型。 http://json2csharp.com/是一种选择。
- 使用 How do I turn a C# object into a JSON string in .NET? 中提到的 JSON 序列化器之一 将 JSON 反序列化为您的数据模型。 json.net目前最受欢迎。
- 使用
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();
演示 fiddle here .
关于c# - 如何将两个 float 组的 JSON 解析为两个列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56103920/