2017-02-02 6 views
-2

私はそれを動作させることはできません。ここではJSONです:jsonconvert.deserializeobject c#array

https://fipe-parallelum.rhcloud.com/api/v1/carros/marcas/59/modelos

そしてここでは私のコードは次のとおりです。

using (var client = new WebClient()) 
    { 


     var url = string.Format("https://fipe-parallelum.rhcloud.com/api/v1/{0}/marcas/{1}/modelos", tipo_cb.SelectedValue, marca_cb.SelectedValue); 
     //Download do resultado 
     var json = client.DownloadString(url); 
     List<Modelos> plist = JsonConvert.DeserializeObject<List<Modelos>>(json); 

     foreach (Modelos data in plist) 
     { 

      modelo_cb.Items.Add(new ListItem(data.nome.ToString(), data.codigo.ToString())); 

     } 


    } 

クラス

public class Modelos 
{ 
    public string nome; 
    public string codigo; 
} 

ありがとう!

+0

実際に何が間違っているのかを実際に判断できるように、JSONの抽出物を投稿してください。 –

+0

あなたの 'Json'がなければ誰も助けることができません。 – AVK

+0

@ダニエル・マルティンあなたは何を達成しようとしていますか? –

答えて

0

問題は、データモデルがJSONと一致しないことです。あなたのルートJSONコンテナは、配列ではなく、オブジェクトである(名前/値のペアのコレクション、中括弧で囲まれています)。{"modelos":[...]}です。このようなオブジェクトは、Json.NET documentationで説明されているように、非コレクションのC#オブジェクトにマップする必要があります。そして、あなたは、単にhttp://json2csharp.com/にあなたのJSONのリンクを投稿する場合は、実際に、それはあなたのために正しいデータモデルを設計します:次のように

public class Modelo 
{ 
    public string nome { get; set; } 
    public int codigo { get; set; } 
} 

public class Ano 
{ 
    public string nome { get; set; } 
    public string codigo { get; set; } 
} 

public class RootObject 
{ 
    public List<Modelo> modelos { get; set; } 
    public List<Ano> anos { get; set; } 
} 

はその後デシリアライズ:

List<Modelo> plist; 
using (var client = new WebClient()) 
{ 
    var url = @"https://fipe-parallelum.rhcloud.com/api/v1/carros/marcas/59/modelos"; 

    //Download do resultado 
    var json = client.DownloadString(url); 
    var root = JsonConvert.DeserializeObject<RootObject>(json); 
    plist = root.modelos; 
} 

fiddleを。