C# 从JSON数据构建对象?

C# 从JSON数据构建对象?,c#,json,class,object,asynchronous,C#,Json,Class,Object,Asynchronous,因此,当我从服务器获取JSON数据时,我想构建一个City类 public class City { public string id { get; set; } public string country { get; set; } public string region { get; set; } public string mainCity { get; set; } public string latitude { get; set; }

因此,当我从服务器获取JSON数据时,我想构建一个City类

public class City
{
    public string id { get; set; }
    public string country { get; set; }
    public string region { get; set; }
    public string mainCity { get; set; }
    public string latitude { get; set; }
    public string longitude { get; set; }
    public string comment { get; set; }
    public bool wasThereAnError { get; set; }

    public class CityResponse
    {
        public string status { get; set; }
        public string message { get; set; }
        public List<City> result { get; set; }
    }

    public override string ToString()
    {
        return "\n\nID: \t\t" + id + "\nCountry: \t" + country + "\nRegion: \t\t" + region + "\nCity: \t\t" + mainCity + "\nLatitude: \t" + latitude + "\nLongitude: \t" + longitude + "\nComment: \t" + comment;
    }
}
我想让City类填充相应的数据。 这是我拥有的获取数据的web检索类

        async private Task<City> GetCityInformation(string url)
    {
        var client = new HttpClient();
        var response = await client.GetAsync(new Uri(url));

        string result = await response.Content.ReadAsStringAsync();

        //var cityRootaaa = JsonConvert.DeserializeObject<City.CityResponse>(result);


        var cityRoot = JsonConvert.DeserializeObject<City>(result);
        return cityRoot;
    }
}
异步私有任务GetCityInformation(字符串url) { var client=新的HttpClient(); var response=await client.GetAsync(新Uri(url)); 字符串结果=wait response.Content.ReadAsStringAsync(); //var cityrotaaa=JsonConvert.DeserializeObject(结果); var cityRoot=JsonConvert.DeserializeObject(结果); 返回城市轨道; } } 但是,当我调试时,我可以看到没有保存任何内容。 最初,我在City的id上方有另一个状态字段,当我调试时,状态字段中设置了“OK”,但没有其他数据。 我不知道该怎么办?
谢谢你的帮助

您的json字符串包含具有两个属性的对象,status和city对象,因此您反序列化类似字符串的类型应为:

public class CityResponse
{
    public string status { get; set; }
    public City result { get; set; }
}
现在可以像这样反序列化它

var cityResponse = JsonConvert.DeserializeObject<CityResponse>(result);
return cityResponse.City;
var cityResponse = JsonConvert.DeserializeObject<CityResponse>(result);
return cityResponse.City;
var cityResponseType = new { status = string.Empty, result = new City() };
var cityResponse = JsonConvert.DeserializeAnonymousType(result, cityResponseType);
return cityResponse.result;