gpt4 book ai didi

c# - 如何将两个 float 数组的 JSON 解析为两个列表?

转载 作者:行者123 更新时间:2023-11-30 22:54:35 31 4
gpt4 key购买 nike

我有一个 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 个属性。

我想做的是将这些“lattitudes”和“longitudes”数组写入列表/数组,然后使用 SQL“INSERT”语句对它们进行 foreach(我知道 - 这是一种非常讨厌的方式,但我不能想出更聪明的办法)。

如何将此 JSON 反序列化为两个 List<T>需要进一步处理的列表?

最佳答案

要将第一个 JSON 样本反序列化为纬度/经度对数组,您可以:

  1. 使用 How to auto-generate a C# class file from a JSON object string 中提到的代码生成工具之一。 生成相应的数据模型。 http://json2csharp.com/是一种选择。
  2. 使用 How do I turn a C# object into a JSON string in .NET? 中提到的 JSON 序列化程序之一 将 JSON 反序列化为您的数据模型。 是目前最受欢迎的。
  3. 使用 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/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com