我正在使用http客户端从webservice返回json响应。我在这里的例子来自代码项目教程。但是它的示例只返回到var,它是为在屏幕上调用的方法创建的,我将其更改为从类中调用。为了安全起见,我删除了web服务。
我的主要问题是如何更改此函数以返回电影列表而不是var变量我有一个如此创建的类。我尝试将var更改为List但我注意到json.net处理这个列表所以我需要将var作为已知对象返回而不是我认为?。
public class City
{
public string id { get; set; }
public string timing_title { get; set; }
}
public class Citys
{
public List<City> city { get; set; }
}
我只是不知道如何转换它,所以它会返回一个城市列表供我在功能中使用。
这是返回的示例json数据的列表。
{ “城市”:[{ “ID”: “5521”, “timing_title”: “拉合尔”},{ “ID”: “5517”, “timing_title”: “卡拉奇”},{ “ID”: “5538”, “timing_title”: “伊斯兰堡”},{ “ID”: “5535”, “timing_title”: “拉瓦尔品第”},{ “ID”: “5518”, “timing_title”: “海得拉巴”},{ “ID”: “5512”, “timing_title”: “费萨拉巴特”},{ “ID”: “8028”, “timing_title”: “古杰朗瓦拉”},{ “ID”: “8027”, “timing_title”:“古吉拉特“}]}
public async void GetCinemasList()
{
try
{
using (HttpClient client = new HttpClient())
{
client.BaseAddress = new Uri("webserviceurl");
var url = "index.php/webservice/upcoming_movie";
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
HttpResponseMessage response = await client.GetAsync(url);
if (response.IsSuccessStatusCode)
{
var data = response.Content.ReadAsStringAsync();
var cityData = JsonConvert.DeserializeObject<City>(data.Result.ToString());
}
}
}
catch (Exception ex)
{
// MessageBox.Show("Some Error Occured");
}
}
答案 0 :(得分:0)
你有string
持有JSON值。
您可以解析并迭代JSON值,如下所示:
var data = "{\"city\":[{\"id\":\"5521\",\"timing_title\":\"Lahore\"},{\"id\":\"5517\",\"timing_title\":\"Karachi\"},{\"id\":\"5538\",\"timing_title\":\"Islamabad\"},{\"id\":\"5535\",\"timing_title\":\"Rawalpindi\"},{\"id\":\"5518\",\"timing_title\":\"Hyderabad\"},{\"id\":\"5512\",\"timing_title\":\"Faisalabad\"},{\"id\":\"8028\",\"timing_title\":\"Gujranwala\"},{\"id\":\"8027\",\"timing_title\":\"Gujrat\"}]}";
JsonObject rootObject;
if (JsonObject.TryParse(data, out rootObject))
{
JsonArray cityArray = rootObject.GetNamedArray("city");
foreach (var jsonValue in cityArray)
{
JsonObject cityObject = jsonValue.GetObject();
Debug.WriteLine(cityObject.GetNamedString("timing_title"));
}
}
else
{
// Invalid JSON data.
}
输出:
Lahore
Karachi
Islamabad
Rawalpindi
Hyderabad
Faisalabad
Gujranwala
Gujrat