json - 以 Json 格式(C#)请求统计学习数据集的元素
问题描述
请我想请求这个数据集https://web.stanford.edu/~hastie/ElemStatLearn/datasets/prostate.data并以 json 格式获取它。但是当我运行它时,我收到此错误“解析值时遇到意外字符:l.路径'',第 1 行,位置 1。”。下面是我使用 C# 编写的代码
public class Prostate
{
public string lcavol { get; set; }
public string lweight { get; set; }
public string age { get; set; }
public string lbph { get; set; }
public string svi { get; set; }
public string lcp { get; set; }
public string gleason { get; set; }
public string pgg45 { get; set; }
public string lpsa { get; set; }
public string train { get; set; }
}
public async Task<Prostate> Data()
{
HttpClient client = new HttpClient();
var resp = await client.GetAsync("https://web.stanford.edu/~hastie/ElemStatLearn/datasets/prostate.data");
var repsStr = await resp.Content.ReadAsStringAsync();
var newdata = JsonConvert.DeserializeObject(repsStr);
Prostate somedata = (Prostate) newdata;
return somedata;
}
解决方案
我将文件保存为txt并在excel中打开它。我后来将其保存为 csv 然后使用此代码读取它
public async Task<List<Prostate>> Files()
{
List<Prostate> prostates = new List<Prostate>();
var file = Path.Combine(Directory.GetCurrentDirectory(), "[path to file]");
string[] linesofdata = await System.IO.File.ReadAllLinesAsync(file);
foreach(string line in linesofdata){
string[] linewords = line.Split(',');
Prostate newprostate = new Prostate();
newprostate.lcavol = linewords[0];
newprostate.lweight = linewords[1];
newprostate.age = linewords[2];
newprostate.lbph = linewords[3];
newprostate.svi = linewords[4];
newprostate.lcp = linewords[5];
newprostate.gleason = linewords[6];
newprostate.pgg45 = linewords[7];
newprostate.lpsa = linewords[8];
newprostate.train = linewords[9];
prostates.Add(newprostate);
}
return prostates.ToList();
}
推荐阅读
- php - 如何选择所有前后没有空格的“?
- objective-c - 在 Objective-C 代码中使用 Swift 的缺点?
- javascript - @Html.Partial 之后的 Ko 绑定不起作用
- python - Selenium:检查元素是否存在于循环中,如果为真,则单击,如果不存在则继续
- asp.net-identity - 使用带有 aspnet.identity 的简单注入器
- jdbc - 如何使用 Grafana 监控 JDBC 调用和统计信息
- openssl - 如何创建自己的扩展验证证书以显示绿条?
- matlab - 在matlab中创建间隔[a,b]的线性对数对数线性分区,但匹配步骤
- node.js - req.flash() 需要会话但会话存在
- node.js - 如果 JS stacktrace 中的行号超出文件末尾是什么意思?