2017-04-20 16 views
1

私はいくつかのJSONを持っている私は(https://api.zype.com/consumers/?api_key=qfcR4WWqBws1ezeUHNxTTQl8ucuuP9pW1rMssmQBFUE-AbpPhKp_cY0RnfpY57y5)デシリアライズしようとしています:デシリアライズJSON

私は消費者のクラスとZypeConsumerListを持っている:

Public Class Consumer 
    <JsonProperty("email")> 
    Public Property Email As String 
    <JsonProperty("stripe_id")> 
    Public Property StripeId As List(Of String) 
    <JsonProperty("_id")> 
    Public Property Id As String 
    <JsonProperty("_keywords")> 
    Public Property Keywords As List(Of String) 
    <JsonProperty("created_at")> 
    Public Property CreatedOn As Nullable(Of Date) 
    <JsonProperty("updated_at")> 
    Public Property UpdatedOn As Nullable(Of Date) 
    <JsonProperty("deleted_at")> 
    Public Property DeletedOn As Nullable(Of Date) 
    <JsonProperty("site_id")> 
    Public Property SiteId As String 
    <JsonProperty("subscription_count")> 
    Public Property SubscriptionCount As Int16 
End Class 

Public Class ZypeConsumerList 
    <JsonProperty("response")> 
    Public Property Consumers As List(Of DanceNetwork.Zype.Consumer) 
    <JsonProperty("pagination")> 
    Public Property Pagination As DanceNetwork.Zype.Pagination 
End Class 

私はデシリアライズしようとしていますJSON:

 Dim zResponse As ZypeResponse = myCall.Execute(ZypeRestEndpoint.Consumers) 
     Dim responseBlock As ZypeConsumerList 
     Dim mySerializerSettings As JsonSerializerSettings = New JsonSerializerSettings() 
     mySerializerSettings.NullValueHandling = NullValueHandling.Ignore 
     responseBlock = Newtonsoft.Json.JsonConvert.DeserializeObject(Of ZypeConsumerList)(zResponse.data, mySerializerSettings) 

私はこのエラーを取得する:

Error converting value "cus_AHtHxKXCwe6MPZ" to type 'System.Collections.Generic.List`1[System.String]'. Path 'response[3].stripe_id', line 1, position 2043. 

JSONの形式が間違っていて、実際には上記の値が文字列であることはありません。私は間違って何をしていますか?これをどうやって解決しますか?この構造は、以下の私のため

public class Consumer 
{ 
    public string _id { get; set; } 
    public string amazon_user_id { get; set; } 
    public string birthday { get; set; } 
    public string braintree_id { get; set; } 
    public string created_at { get; set; } 
    public string email { get; set; } 
    public string name { get; set; } 
    public string pass_count { get; set; } 
    public string password_token { get; set; } 
    public string playlist_count { get; set; } 
    public string remember_token { get; set; } 
    public string rss_token { get; set; } 
    public string sex { get; set; } 
    public string site_id { get; set; } 
    public string stripe_id { get; set; } 
    public string subscription_count { get; set; } 
    public string terms { get; set; } 
    public string transaction_count { get; set; } 
    public string updates { get; set; } 
    public string video_count { get; set; } 
    public List<string> linked_devices { get; set; } 
} 

public class Pagination 
{ 
    public string current { get; set; } 
    public string previous { get; set; } 
    public string next { get; set; } 
    public string per_page { get; set; } 
    public string pages { get; set; } 
} 

を作品

+2

stipe_idは文字列ではありませんか?クラスのList(Of String)として定義されています。 – Lithium

+1

あなたのコードがVBのときに、なぜC#としてタグ付けされていますか? –

+0

どのようにそれらのクラスを作成したのか分かりませんが、私が通常行っていることは、あなたのようなエラーを避けるために、jsonの結果に基づいてクラスを生成するためにhttp://json2csharp.com/に行きます。 –

答えて

1

は、あなたのタグは、C#であるので、私はC#のコードを使用しています更新要素

public static void Main(string[] args) 
    { 
     using (var stream = new StreamReader("sample.json")) 
     { 

      var rootObject = JsonConvert.DeserializeObject<Root>(stream.ReadToEnd()); 
      int index = 0; 
      foreach (var responses in rootObject.response) 
      { 

       Console.WriteLine(responses.stripe_id); 
      } 
      Console.WriteLine(rootObject.pagination.current); 
      Console.WriteLine(rootObject.pagination.next); 
      Console.WriteLine(rootObject.pagination.pages); 
      Console.WriteLine(rootObject.pagination.per_page); 
      Console.WriteLine(rootObject.pagination.previous); 


     } 

     Console.Read(); 
    } 

にアクセスするためのコードです。

関連する問題