Xamarin添加了System.Json

时间:2014-10-07 20:02:35

标签: c# xamarin

我一直是一个启用Web服务从url获取数据的教程。但是,在本教程中,它要求添加System.Json。我添加了使用System.Json,但它给了我一个错误。

//这是我在C#中完成的代码,它运行良好

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Net;
using System.Text;
using System.Threading.Tasks;
using Newtonsoft;
using Newtonsoft.Json;

namespace Weather_App
{
    class Program
    {
        static void Main(string[] args)
        {
            Uri uri = new Uri("http://api.wunderground.com/api/key/conditions/q/CA/Houston.json");
            WebRequest webRequest = WebRequest.Create(uri);
            WebResponse response = webRequest.GetResponse();
            StreamReader stramreader = new StreamReader(response.GetResponseStream());
            String responseData = stramreader.ReadToEnd();


            var outObject = JsonConvert.DeserializeObject<Component.RootObject>(responseData);


            Console.WriteLine(responseData);
            Console.ReadLine();
        }
    }
}

//这是我想在Xamarin中实现相同功能但是在使用system.json时遇到困难的代码

using System;
using System.Collections.Generic;
using System.IO;
using System.Net;
using Newtonsoft.Json;
using Xamarin.Forms;
using System.Xml;
using System.Json;

namespace Exercise21
{   
    public partial class MyPage : ContentPage
    {   
        public MyPage ()
        {
            InitializeComponent ();
            CallWebService ();

        }

        private async void CallWebService()
        {

            Uri url = new Uri ("http://api.wunderground.com/api/key/conditions/q/CA/Houston.json");
            var httpReq = (HttpWebRequest)HttpWebRequest.Create (url);
            httpReq.BeginGetResponse ((ar) => {
                var request = (HttpWebRequest)ar.AsyncState;
                using (var response = (HttpWebResponse)request.EndGetResponse (ar)) {                           
                    var s = response.GetResponseStream ();
                    var j = (JsonObject)JsonObject.Load (s);
                    var results = (from result in (JsonArray)j ["results"]
                                   let jResult = result as JsonObject
                                   select jResult ["text"].ToString ()).ToArray ();
                    RunOnUiThread (() => {
                        ListAdapter = new ArrayAdapter<string> (this,
                            Resource.Layout.TweetItemView, results);
                    });
                }
            }, httpReq);

        }
    }
}

enter image description here

3 个答案:

答案 0 :(得分:1)

右键单击Referenes,然后单击Add Refernce。在“搜索”框中键入“System.Json”。然后单击旁边的复选框。

答案 1 :(得分:0)

如果我错了,请纠正我,您需要等价的JsonObjectRequest  .NET,对吗?

检查您using的库的文档

答案 2 :(得分:-1)

using (HttpWebResponse response = request.GetResponse() as HttpWebResponse)
       {
           if (response.StatusCode != HttpStatusCode.OK)
               Console.Out.WriteLine("Error fetching data. Server returned status code: {0}", response.StatusCode);
           using (StreamReader reader = new StreamReader(response.GetResponseStream()))
           {
               var content = reader.ReadToEnd();
               var Results = JsonConvert.DeserializeObject<dynamic>(content);

               if (string.IsNullOrWhiteSpace(content))
               {
                   Console.Out.WriteLine("Response contained empty body...");
               }
               else
               {
                   Console.Out.WriteLine("Response Body: \r\n {0}", content);
               }
           }
       }

你可以尝试Json.Net添加引用然后尝试使用jsonConvert

我希望这对你有帮助