首页 > 解决方案 > 以 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;
    }

标签: json

解决方案


我将文件保存为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();
    }

推荐阅读