gpt4 book ai didi

c# - 创建 JSON 字符串的问题

转载 作者:太空狗 更新时间:2023-10-30 01:14:14 26 4
gpt4 key购买 nike

我的大脑不工作了,我正在尝试做一些比我想象的更难的事情,我需要另一双眼睛。我在文本文件中有以下内容

|TS|170702/2300|170703/0503|42.80 -102.64 39.76 -102.64 39.44 -99.37 42.48 -99.37
|TS|170703/0505|170703/0905|40.22 -97.30 38.63 -97.30 38.19 -101.03 39.78 -101.03

以上是什么意思...(|watchtype|watchstart|watchend| lat/long 对)

我遇到的问题是我需要获取每一行(可以是 0 或 100+)并在 map 上创建一个多边形来标记这些 Storm watch 的位置。我目前有以下内容。

型号

public class WatchPolygons
{
public string WatchType { get; set; }
public string WatchStart { get; set; }
public string WatchEnd { get; set; }
public List<lat_longPairs> Lat_Long_Pairs {get; set;}
}

public class lat_longPairs
{
public decimal latitude { get; set; }
public decimal longitude { get; set; }
}

Controller

public JsonResult GetWatchPath()
{
var watchFilePaths = ConfigurationManager.AppSettings["watchFilePath"];
return Json(Directory.GetFiles(Server.MapPath(watchFilePaths), "current*.txt"), JsonRequestBehavior.AllowGet);
}

[HttpGet]
public ActionResult GetWatchData(string watchPath)
{
var stringData = new List<string>();
using (var reader = new StreamReader(watchPath))
{
while (!reader.EndOfStream)
{
var data = reader.ReadLine().Trim();

if (!string.IsNullOrEmpty(data))
stringData.Add(data);
}

}

return Json((from item in stringData
select item.Split(new char [] { '|' }, StringSplitOptions.RemoveEmptyEntries)
into rawData
select new WatchPolygons
{
WatchType = rawData[0],
WatchStart = rawData[1],
WatchEnd = rawData[2]
}).ToList(), JsonRequestBehavior.AllowGet);
}

我知道我遗漏了 latlong pairs = rawData。我在代码中没有它,因为在模型中它是一个列表,我无法轻松地将列表转换为我需要的字符串。

我错过了什么?我相信我需要阅读每一行然后阅读每一组以获得纬度/经度对。只是不确定。

最佳答案

您只需要解析 rawData[3],其中包含以空格分隔的经纬度对的字符串。这是一个天真的实现,当输入字符串不包含数字对或当前语言环境不使用点作为小数点分隔符时,它将中断:

private static List<lat_longPairs> ParseLatLon(string input)
{
var numbers = input.Split(new [] { " " }, StringSplitOptions.RemoveEmptyEntries)
.Select(i => decimal.Parse(i))
.ToArray();

var latLonPairs = new List<lat_longPairs>();

for (int i = 0; i < numbers.Length; i += 2)
{
latLonPairs.Add(new lat_longPairs
{
latitude = numbers[i],
longitude = numbers[i + 1],
});
}

return latLonPairs;
}

然后从投影多边形的位置调用它:

select new WatchPolygons
{
WatchType = rawData[0],
WatchStart = rawData[1],
WatchEnd = rawData[2],
Lat_Long_Pairs = ParseLatLon(rawData[3])
}

您可能还想将解析代码从 Controller 中移出,移到它自己的类中。

关于c# - 创建 JSON 字符串的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44890885/

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