C# 从vkapi解析大学

C# 从vkapi解析大学,c#,json,api,vk,C#,Json,Api,Vk,我需要写信给大学名单。我已经把国家和城市写进了名单。但在大学里,数据的表现略有不同。有{“response”:[201,我不知道如何处理它。我成功地从中获得了国家。从中,我需要将大学名称写入列表中。这就是我获得国家的方式。我在城市中使用的模拟代码。在尝试执行这一行时var universityRepository=new RootObject((int)universityResponse[“id”],(string)universityResponse[“title”];我收到一个未处理的异常

我需要写信给大学名单。我已经把国家和城市写进了名单。但在大学里,数据的表现略有不同。有
{“response”:[201,
我不知道如何处理它。我成功地从中获得了国家。从中,我需要将大学名称写入
列表中。这就是我获得国家的方式。我在城市中使用的模拟代码。在尝试执行这一行时
var universityRepository=new RootObject((int)universityResponse[“id”],(string)universityResponse[“title”];
我收到一个未处理的异常。类的完整代码:

public class GettingUniversity
{
    public static List<RootObject> listOfUniversitiesRoot = new List<RootObject>();//This List contains Id and Titles of universities
    public List<string> listOfUniversities = new List<string>();//list with names of the universities
    private string jsonString; //string for getting data from the url
    public async Task<List<RootObject>> FetchAsync(string url)
    {
        //getting data process goes here
        using (var httpClient = new System.Net.Http.HttpClient())
        {
            var stream = await httpClient.GetStreamAsync(url);
            StreamReader reader = new StreamReader(stream);
            jsonString = reader.ReadToEnd();
        }

        var responseUniversities = JArray.Parse(JObject.Parse(jsonString)["response"].ToString());//parsing data from jsonstring

        foreach (var universityInResponse in responseUniversities)//the foreach-loop
        {
            var universityRepository = new RootObject((int)universityInResponse["id"], (string)universityInResponse["title"]);
            //listOfUniversitiesRoot.Add(universityRepository);//adding to the list with names of the universities
            //listOfUniversities.Add(universityRepository.Title);
        }

        return listOfUniversitiesRoot;//returned list
    }

您的问题是,返回的JSON包含一个多态数组——第一个条目是一个整数,其余的是包含大学信息的对象:

{
   "response":[
      201,
      {
         "id":1096,
         "title":"КПИ им. И. Сикорского"
      },
      {
         "id":1135,
         "title":"НУФВСУ (бывш. КГИФК)"
      },
      {
         "id":1140,
         "title":"КГАВТ им. Конашевича-Сагайдачного"
      },
在反序列化对象之前,需要过滤整数值,具体操作如下:

var universityRepository  = JToken.Parse(jsonString)["response"]
    // Filter the integer value by selecting only objects
    .OfType<JObject>()
    // Deserialize each object to a RootObject
    .Select(o => o.ToObject<RootObject>())
    // Return in a List<RootObject>
    .ToList();

var listOfUniversities = universityRepository
    .Select(u => u.Title)
    .ToList();
var universityRepository=JToken.Parse(jsonString)[“response”]
//通过仅选择对象筛选整数值
第()类
//将每个对象反序列化为根对象
.Select(o=>o.ToObject())
//列表返回
.ToList();
var ListofUniversity=大学报告
.选择(u=>u.Title)
.ToList();
样品

注意,似乎不需要将这些列表存储在静态或类变量中——您只需将它们返回给调用方即可

var universityRepository  = JToken.Parse(jsonString)["response"]
    // Filter the integer value by selecting only objects
    .OfType<JObject>()
    // Deserialize each object to a RootObject
    .Select(o => o.ToObject<RootObject>())
    // Return in a List<RootObject>
    .ToList();

var listOfUniversities = universityRepository
    .Select(u => u.Title)
    .ToList();