2017-04-26 1 views
2

Ich verwende eine HTTPWebResponse von einer REST-API, die als Base64 Encoded zurückkommt. Wenn ich es entziffere, scheint es zu deserialisieren, aber wenn ich clasess erstelle, habe ich Namen, die ungültig sind und Leerzeichen in ihnen haben.Deserialisierte JSON Reside-C# -Klassen mit Leerzeichen

Ich habe versucht, JsonObject und JsonProperty, aber ich habe nicht die verfügbaren Referenzen und Namespaces in Visual Studio 2010 und SQL Server 2008 R2 (SSIS) und ich kann nicht herausfinden, wie Sie darüber hinauskommen.

Es ist eine Transaktionsdetaildatei und als solche sehr groß und kann hier nicht gepostet werden. Ich wundere mich, wenn jemand mir zeigen kann, wie man entweder die richtigen Referenzen lädt, um die oben genannten Methoden zu verwenden, oder mir alternativ sagt, wie man JSON-Tags mit Leerzeichen liest und sie trotzdem in ciscript-Komponente in SSIS gültig deklariert.

Beispiel: Antwort:

  "High Risk Merchants": { 
       "High Risk Merchants": [ 
       { 
        "AccountID": 4829640, 
        "H1": "High Risk Merchants", 
        "H2": "High Risk Merchants", 
        "H3": "", 
        "SH1": "", 
        "Description": "{NO MATCH}", 
        "Count": null, 
        "FrequencyDescription": null, 
        "FrequencyDuration": null, 
        "FrequencyDurationDate": null, 
        "FrequencyWeekday": null, 
        "FrequencyAmount": null, 
        "FrequencyAmountRange": null, 
        "TotalAmount": null, 
        "TotalInAmount": null, 
        "TotalOutAmount": null, 
        "MonthlyAmount": null, 
        "GroupID": null, 
        "Display": null, 
        "FrequencyExactness": null, 
        "FrequencyPeriod": null, 
        "ScoreEmployer": null, 
        "ScoreDirCr": null, 
        "ScoreWeekday": null, 
        "ScoreFrequency": null, 
        "ScoreAmount": null, 
        "ScoreTotal": null 
       } 
       ] 
      }, 

Beispiel: C# Klassendeklaration (json2csharp)

public class HighRiskMerchant 
{ 
    public int AccountID { get; set; } 
    public string H1 { get; set; } 
    public string H2 { get; set; } 
    public string H3 { get; set; } 
    public string SH1 { get; set; } 
    public string Description { get; set; } 
    public int? Count { get; set; } 
    public string FrequencyDescription { get; set; } 
    public string FrequencyDuration { get; set; } 
    public string FrequencyDurationDate { get; set; } 
    public string FrequencyWeekday { get; set; } 
    public int? FrequencyAmount { get; set; } 
    public string FrequencyAmountRange { get; set; } 
    public int? TotalAmount { get; set; } 
    public int? TotalInAmount { get; set; } 
    public int? TotalOutAmount { get; set; } 
    public int? MonthlyAmount { get; set; } 
    public string GroupID { get; set; } 
    public string Display { get; set; } 
    public string FrequencyExactness { get; set; } 
    public string FrequencyPeriod { get; set; } 
    public object ScoreEmployer { get; set; } 
    public object ScoreDirCr { get; set; } 
    public object ScoreWeekday { get; set; } 
    public object ScoreFrequency { get; set; } 
    public object ScoreAmount { get; set; } 
    public int? ScoreTotal { get; set; } 
} 

public class HighRiskMerchants 
{ 
    public List<HighRiskMerchant> __invalid_name__High Risk Merchants { get; set; } 
} 

DATA Ausgabe Anrufe

foreach (HighRiskMerchant hrm in ac.Overviews.Overview.HighRiskMerchants.HighRiskMerchantEntity) 
      { 
       RptOverviewDataBuffer.AddRow(); 
       RptOverviewDataBuffer.Type = "HighRiskMerchants"; 
       RptOverviewDataBuffer.SubType = "HighRiskMerchantsEntity"; 
       RptOverviewDataBuffer.AccountID = Convert.ToInt32(hrm.AccountID); 
       RptOverviewDataBuffer.H1 = hrm.H1; 
       RptOverviewDataBuffer.H2 = hrm.H2; 
       RptOverviewDataBuffer.H3 = hrm.H3; 
       RptOverviewDataBuffer.SH1 = hrm.SH1; 
       RptOverviewDataBuffer.Description = hrm.Description; 
       RptOverviewDataBuffer.Count = Convert.ToInt32(hrm.Count); 
       RptOverviewDataBuffer.FrequencyDescription = hrm.FrequencyDescription; 
       RptOverviewDataBuffer.FrequencyDuration = hrm.FrequencyDuration; 
       RptOverviewDataBuffer.FrequencyDurationDate = hrm.FrequencyDurationDate; 
       RptOverviewDataBuffer.FrequencyWeekday = hrm.FrequencyWeekday; 
       RptOverviewDataBuffer.FrequencyAmount = Convert.ToDouble(hrm.FrequencyAmount); 
       RptOverviewDataBuffer.FrequencyAmountRange = hrm.FrequencyAmountRange; 
       RptOverviewDataBuffer.TotalAmount = Convert.ToDouble(hrm.TotalAmount); 
       RptOverviewDataBuffer.TotalInAmount = Convert.ToDouble(hrm.TotalInAmount); 
       RptOverviewDataBuffer.TotalOutAmount = Convert.ToDouble(hrm.TotalOutAmount); 
       RptOverviewDataBuffer.MonthlyAmount = Convert.ToDouble(hrm.MonthlyAmount); 
       RptOverviewDataBuffer.GroupID = hrm.GroupID; 
       RptOverviewDataBuffer.Display = hrm.Display; 
       RptOverviewDataBuffer.FrequencyExactness = hrm.FrequencyExactness; 
       RptOverviewDataBuffer.FrequencyPeriod = hrm.FrequencyPeriod; 
       RptOverviewDataBuffer.ScoreEmployer = Convert.ToInt32(hrm.ScoreEmployer); 
       RptOverviewDataBuffer.ScoreDirCr = Convert.ToInt32(hrm.ScoreDirCr); 
       RptOverviewDataBuffer.ScoreWeekday = hrm.ScoreWeekday; 
       RptOverviewDataBuffer.ScoreFrequency = hrm.ScoreFrequency; 
       RptOverviewDataBuffer.ScoreAmount = Convert.ToDouble(hrm.ScoreAmount); 
       RptOverviewDataBuffer.ScoreTotal = Convert.ToInt32(hrm.ScoreTotal); 
      } 
+0

Teilen Sie Ihre JSON-Antwort und die Klassen. –

+0

Wie ich gesagt habe, ist dies zu groß und überschreitet die Limitierung, aber ich habe Beispiel hinzugefügt –

+0

Sie müssen nicht vollständige json, nur ein Bild von, wie Ihr json aussieht und Ihre Klassen sowie. –

Antwort

1

für die Bibliothek verwenden Sie nuget verwenden können zu install "Json.Net"

In diesem Beispiel wäre es:

public class HighRiskMerchants 
{ 
    [JsonProperty(PropertyName = "High Risk Merchants")] 
    public List<HighRiskMerchant> HighRiskMerchants { get; set; } 
} 
+0

Wie installiere ich NuGet Json.Net? Ich habe nicht die Optionen, die Ihr Link zeigt. Ich verwende Microsoft Visual Studio 2010 Version 10.0.40219.1 SP1Rel Microsoft .NET Framework Version 4.5.51209 SP1Rel –

+0

Zuerst müssen Sie Nuget installieren, dann installieren Sie Json.Net von dort.Versuchen Sie dies [Link] (http: // peterkellner.net/2011/03/02/installing-nugge-on-vs2010-first-blood/) – spinalfrontier

+0

Ich habe es versucht und es wird keine Version installieren, die es mir erlaubt, Json.Net zu installieren, da ich auf VS 2010 SHELL beschränkt bin . Thesen sind die Fehler, die ich hier bekomme [Link] (http://stackoverflow.com/questions/4366661/nuget-json-net-install-erros-vs-2010-shell?noredirect=1#comment74341851_43646661) –

Verwandte Themen