2014-10-07 4 views
2

웹 서비스가 URL에서 데이터를 가져올 수 있도록하는 자습서를 작성했습니다. 그러나 자습서에서는 System.Json을 추가 할 것을 요구합니다. System.Json을 사용하여 추가했지만 오류가 발생합니다.Xamarin adding 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(); 
     } 
    } 
} 

// 여기에 내가 자 마린에서 같은 기능을 구현하고자하는 코드 만 사용하여 어려움을 겪고있다 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

+0

관련 어셈블리를 참조하고 있습니까? 이 어셈블리는 Xamarin에서 일반적인 .Net과 약간 다릅니다. [이 링크] (http://developer.xamarin.com/guides/android/under_the_hood/assemblies/)가 도움이 될 수 있습니다. –

+2

대신 Json.NET을 사용하도록 초대합니다. 너 게 (Nuget) – Pedro

+0

에서 찾을 수있는 라이브러리입니다. 또한 자습서가 온라인 인 경우 질문에 대한 링크를 포함시키는 것이 도움이 될 수 있습니다. 실제로 Xamarin 튜토리얼입니까? –

답변

-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 참조 후, 나는이 모든 프로젝트에 JSON.net의 nuget 패키지를 추가하면

-1

도움을 희망

jsonConvert

를 사용하려고 추가 할 수 있습니다. 그러면 전화 할 수 있습니다

  string jsonAsString = jsonStream.ReadToEnd(); 

      RootObject theRoot = Newtonsoft.Json.JsonConvert.DeserializeObject<RootObject>(jsonAsString); 
1

오른쪽 클릭하여 참조 추가를 클릭하십시오. 검색 상자에 "System.Json"을 입력하십시오. 그런 다음 옆에있는 확인란을 클릭하십시오.