从JSON GET请求中获取字符串

时间:2012-04-03 10:15:50

标签: c# json windows-phone-7

我正在为Windows Phone 7开发一个应用程序。我正在向JSON服务发出GET请求。请求的返回类型是一个对象。

我的问题是,如何根据对象中的信息创建字符串。下面的代码是我用来发出请求和处理响应的内容。

        HttpWebRequest carRequest = (HttpWebRequest)WebRequest.Create(carUrl);
        carRequest.Method = "GET";
        carRequest.BeginGetResponse(new AsyncCallback(ProcessResponse), carRequest);

    private void ProcessResponse(IAsyncResult asyncResult)
    {
        HttpWebRequest request = (HttpWebRequest)asyncResult.AsyncState;
        WebResponse response = (HttpWebResponse)request.EndGetResponse(asyncResult);
        StreamReader sr = new StreamReader(response.GetResponseStream());
        Car.car = (Car)JsonConvert.DeserializeObject(sr.ReadToEnd(), typeof(Car));
        Deployment.Current.Dispatcher.BeginInvoke(() =>
            {
                NavigationService.Navigate(new Uri("/SearchResults.xaml", UriKind.Relative));
            });
    }

2 个答案:

答案 0 :(得分:0)

为什么不使用WebClient?

private void DownloadString()
{
    var wc = new WebClient();
    wc.DownloadStringCompleted += MyHandler;
    wc.DownloadStringAsync(carUrl);
}

void MyHandler(object sender, DownloadStringCompletedEventArgs e)
{
    var result = e.Result;
}

请注意,这是下载字符串的一般解决方案。如果要解析JSON,请使用JSON.Net中包含的方法之一进行此类交互。

另请注意,您可能希望将结果对象存储在某处,以便可以在搜索结果页面上访问它,或者在那里进行下载/反序列化。

答案 1 :(得分:0)

您应该能够使用JsonConvert.SerializeObject,详情如下: -

http://james.newtonking.com/projects/json/help/SerializingJSON.html