2017-01-06 20 views
0

私はXamarin.Formsを初めて使用しています。リストビューに表示するJSON文字列を非直列化しようとしています。私は、サーバーからJSON文字列を取得することに成功したが、それをデシリアライズしようとしたとき、それは、このエラーがスローされます。ここではxamarin.forms - Newtonsoft.Json.JsonSerializationException:値の変換中にエラーが発生しました。

Newtonsoft.Json.JsonSerializationException: Error converting value "El Rey Cantina TRC" to type 'App7.Page1+Place[]'. Path 'titulo', line 1, position 30. 

は私のコードです:

namespace App7 
{ 
    public partial class Page1 : ContentPage 
    { 
     static ListView lstPlaces = new ListView(); 

     public Page1() 
     { 

      //borrar 
      Button newButn = new Button() 
      { 

       Text = "Connect to Service", 
       TextColor = Color.FromHex("#333333"), 
       HorizontalOptions = LayoutOptions.Center 

      }; 

      Content = new StackLayout 
      { 

       Children = { 

        newButn, 
        lstPlaces 

       } 

      }; 
      //borrar 

      //click 
      newButn.Clicked += newButn_Clicked; 
      lstPlaces.ItemTemplate = new DataTemplate(typeof(TextCell)); 
      lstPlaces.ItemTemplate.SetBinding(TextCell.TextProperty, "titulo"); 
      //click 

     } 

     async void newButn_Clicked(object sender, EventArgs e) 
     { 
      //que pedo 
      GeoNamesWebService geoService = new GeoNamesWebService(); 
      Place[] places = await geoService.GetPlacesAsync(); 
      lstPlaces.ItemsSource = places; 
     } 

     public class GeoNamesWebService 
     { 
      public GeoNamesWebService() 
      { 
      } 
      public async Task<Place[]> GetPlacesAsync() 
      { 
       var client = new System.Net.Http.HttpClient(); 
       client.BaseAddress = new Uri("http://www.catcherapp.net/"); 
       StringContent str = new StringContent("postalcode=752020&country=IN&username=nirmalh", Encoding.UTF8, "application/x-www-form-urlencoded"); 
       var response = await client.PostAsync(new Uri("http://www.catcherapp.net/borrar/borrar.php"), str); 
       var placesJson = response.Content.ReadAsStringAsync().Result; 
       Placeobject placeobject = new Placeobject(); 
       if (placesJson != "") 
       { 
        placeobject = JsonConvert.DeserializeObject<Placeobject>(placesJson); 
       } 
       return placeobject.places; 
      } 
     } 


     public class Placeobject 
     { 
      [JsonProperty("titulo")] 
      public Place[] places { get; set; } 
     } 
     public class Place 
     { 
      public string placeName { get; set; } 
     } 

    } 
} 

JSON文字列:

{"titulo":"Bistro Garden","idE":"gb54ezpjs9k0es8w5q","pp":"sge39na6rbpp7uudgk.jpg","direccion":"Feliciano Cobian #570, Col. Nueva Los Angeles, Torre\u00f3n","contador":null} 

私は何が間違っているのか考えてみませんか?

答えて

0

JSONプロパティ "titulo"は、Placeの配列ではない文字列です。 jsonオブジェクトは次のようにする必要があります:

{ 
    "titulo":[ 
     {"placeName":"place1"}, 
     {"placeName":"place2"}] 
} 
+0

私のjson文字列を使用してそれを行う形式はありますか? –

+0

@GustavoSernaは 'PlaceObject'プロパティの 'places'を文字列に変更します – ATerry

関連する問題