2016-07-13 3 views
0

я получил ошибку, когда я пытаюсь десериализации JSON, потому что моя JSON это не единичные данные (это как массив), то я стараюсь использовать List<> но сказал Cannot convert from System.Collections.Generic.List<string>' to 'stringDeserialize JSON Got Ошибка Использование Newtonsoft.Json Xamarin C#

вот пример данных JSON:

[ 
    { 
     "no":"73", 
     "nama":"Nicosia Lady", 
     "uk":"37 - 40", 
     "fotou":"73-u.jpg", 
     "bahan":"Canvas", 
     "poin":"120", 
     "harga":"119900.00", 
     "warna1":"Green", 
     "warna2":"Grey", 
     "warna3":"Navy", 
     "warna4":"Maroon", 
     "warna5":null 
    }, 
    { 
     "no":"78", 
     "nama":"Minsk Man", 
     "uk":"38 - 43", 
     "fotou":"78-u.jpg", 
     "bahan":"Canvas", 
     "poin":"140", 
     "harga":"141800.00", 
     "warna1":"Black White", 
     "warna2":"Brown BCoffee", 
     "warna3":"Navy Orange", 
     "warna4":"Grey Navy", 
     "warna5":null 
    }, 
] 

это мой класс:

class user 
    { 
     public int no { get; set; } 
     public string nama { get; set; } 
     public string uk { get; set; } 
     public string fotou { get; set; } 
     public string bahan { get; set; } 
     public int poin { get; set; } 
     public int harga { get; set; } 
     public string warna1 { get; set; } 
     public string warna2 { get; set; } 
     public string warna3 { get; set; } 
     public string warna4 { get; set; } 
     public string warna5 { get; set; } 
    } 

это сценарий:

button.Click += async (sender, e) => 
      { 
string url = "http://myapi.com/url/example/"; 
List<user> userList = JsonConvert.DeserializeObject<List<user>>(await FetchUserAsync(url));//got error on await FetchUserAsync(url) 

      // txtHasil.Text = userList.nama; 
     }; 

и это:

private async Task<List<string>> FetchUserAsync(string url) 
     { 
      // Create an HTTP web request using the URL: 
      HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(new Uri(url)); 
      //HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(url); 
      request.ContentType = "application/json"; 
      request.Method = "GET"; 

      // Send the request to the server and wait for the response: 
      using (WebResponse response = await request.GetResponseAsync()) 
      { 
       // Get a stream representation of the HTTP web response: 
       using (var sr = new StreamReader(response.GetResponseStream())) 
       { 
        string strContent = sr.ReadToEnd(); 
        return strContent;// got error on this line 
       } 
      } 
     } 
+0

Это не связано с JSon сериализации. Изменить возвращаемый тип 'FetchUserAsync' на' Task ' –

+0

извините за это и спасибо, он работает – neneo

ответ

4

Возвращение string вместо List<string>.

Другой ректификации (но не ошибка) Измените Int в строку, так как вы получаете строковое значение для свойства ниже:

public string no { get; set; } 
public string poin { get; set; } 
public string harga { get; set; } 
+0

спасибо, что он работает сейчас: D – neneo

Смежные вопросы