将Json Singleton转换为List Phone 81 UAP

时间:2015-08-11 12:15:42

标签: c# web-services windows-phone-8.1

我正在使用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");
    }
}

1 个答案:

答案 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