gpt4 book ai didi

c# - 从 JSON 数据构建对象?

转载 作者:太空宇宙 更新时间:2023-11-03 16:04:32 26 4
gpt4 key购买 nike

所以当我从服务器获取 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;
}
}

这就是那里的类(class)。因此,当我查询时:

    {"status":"okay","result":{"id":1,"country":"US","region":"NY","city":"Valhalla","latitude":41.0877,"longitude":-73.7768,"comment":"890068 monkeys"}}

我希望用相应的数据填充 City 类。这是我获取数据的网络检索类。

        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;
}
}

但是,当我调试时,我可以看到没有任何东西被保存。最初,我在 City 的 id 上方有另一个状态字段,当我调试时,状态字段中设置了“okay”,但没有其他数据。我不确定该怎么办?感谢您的帮助!

最佳答案

您的 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 cityResponseType = new { status = string.Empty, result = new City() };
var cityResponse = JsonConvert.DeserializeAnonymousType(result, cityResponseType);
return cityResponse.result;

关于c# - 从 JSON 数据构建对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19964529/

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