2016-11-16 17 views
2

JSONオブジェクトのデシリアライズに問題があります。これは私が持っているJSONです:Jsonをオブジェクトに逆シリアル化する方法

{ 
    "resource": [{ 
     "ClienteNome": "DOUGLAS DA SILVA BENEDITO", 
     "ClienteStatus": 0 
    }, { 
     "ClienteNome": "MARCO AURELIO DE SÁ GONÇALVES", 
     "ClienteStatus": 1 
    }, { 
     "ClienteNome": "MATHEUS CELESTINO CANDIDO", 
     "ClienteStatus": 2 
    }] 
} 

私はこのようにそれをデシリアライズしようとしている

public static async Task<List<Model.ClientesOnline>> GetAsync() 
{ 
    using (var client = new HttpClient()) 
    { 
      client.DefaultRequestHeaders.Add("X-DreamFactory-Api-Key", "36fda24fe5588fa4285ac6c6c2fdfbdb6b64699774c9bf777f706d05a88"); 
      string json = await client.GetStringAsync("http://api-u16.cloudapp.net/api/v2/nova207/_table/vw_clientes_online"); 

      var clientesonline = JsonConvert.DeserializeObject<List<Model.ClientesOnline>>(json); 
      return clientesonline; 
    } 
} 

モデル

namespace NovaCloud.Model 
{ 
    class ClientesOnline : INotifyPropertyChanged 
    { 


     [JsonProperty("Resorces")] 
     private string clientenome; 
     public string ClienteNome { get { return clientenome; } 
      set 
      { 
       clientenome = value; 
       this.PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(nameof(ClienteNome))); 
      } 
     } 

     private string clientestatus; 
     public string ClienteStatus { get { return clientestatus; } 
      set 
      { 
       clientestatus = value; 
       this.PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(nameof(ClienteStatus))); 
      } 
     } 


     public event PropertyChangedEventHandler PropertyChanged; 

    } 
} 

エラーメッセージ

電流をデシリアライズすることはできませんJSON配列([1,2,3]など)をタイプに変換する10 'System.Collections.Generic.Dictionary`2 [System.String、Linker.Class.alternatives]' 型にはJSONオブジェクトが必要です(例: {"name": "value"})を に正しくデシリアライズします。このエラーを修正するには、JSONオブジェクトを JSONオブジェクト(例:{"name": "value"})に変更するか、またはデシリアライズされたタイプを に変更して、コレクションインターフェイス(例: ICollection、IList)を実装するタイプまたは配列に変更します。 JSON 配列から逆シリアル化できるリスト。 JsonArrayAttributeを型に追加して、 に強制的にJSON配列から逆シリアル化することもできます。

私は

+0

モデルクラスを変更する必要があります。モデルが正しいかどうかわからない場合は、json2csharpで確認してください。 (http://json2csharp.com/) –

答えて

3

あなたのモデルが間違っているいくつかの方法で試みた、あなたがオブジェクトではないリストを期待している、これはモデルが好きでなければならないものです。

public class Resource 
{ 
    public string ClienteNome { get; set; } 
    public int ClienteStatus { get; set; } 
} 

public class ClientsOnline 
{ 
    public List<Resource> resource { get; set; } 
} 

そして、あなたがデシリアライズ

var clientsOnline= JsonConvert.DeserializeObject<ClientesOnline>(json); 
関連する問題