2017-04-26 4 views
2

Base64로 인코딩 된 REST API에서 HTTPWebResponse를 사용하고 있습니다. 내가 해독 할 때 Deserialise는 괜찮은 것처럼 보이지만, 나는 clasess를 만들 때 유효하지 않은 이름이 있고 그 안에 공백이 있습니다.역 직렬화 된 JSON 공간이있는 C# 클래스를 다시 할당합니다.

JsonObject와 JsonProperty를 시도했지만 Visual Studio 2010과 SQL Server 2008 R2 (SSIS)에서 사용 가능한 참조와 이름 공간이없는 것 같아서이 문제를 해결하는 방법을 알 수 없습니다.

트랜잭션 세부 정보 파일이므로 매우 커서 여기에 게시 할 수 없습니다. 누군가가 위의 메서드를 사용하기 위해 올바른 참조를로드하는 방법을 가르쳐 주거나 공백이있는 Json 태그를 읽는 방법을 알려주고 SSIS의 C# 스크립트 구성 요소에서 유효하게 선언하는 방법이 있는지 궁금합니다.

예 : 응답 :

  "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 
       } 
       ] 
      }, 

예 : C# 클래스 선언 (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 출력이

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

JSON 응답과 클래스를 공유하십시오. –

+0

제가 말씀 드렸듯이 이것은 너무 커서 제멋대로입니다.하지만 예제를 추가했습니다. –

+0

json을 게시 할 필요가 없습니다. json이 어떻게 생겼는지뿐만 아니라 클래스도 보여줄 수 있습니다. –

답변

1

호출, 당신은 nuget을 사용할 수 있습니다 ~ install "Json.Net"

이 예에서는 다음과 같습니다.

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

NuGet Json.Net은 어떻게 설치합니까? 귀하의 링크가 보여주는 옵션이없는 것 같습니다. Microsoft Visual Studio 2010을 사용 중입니다. 버전 10.0.40219.1 SP1Rel Microsoft .NET Framework 버전 4.5.51209 SP1Rel –

+0

먼저 Nuget을 설치 한 다음 Json.Net을 설치해야합니다.이 [link] (http : // peterkellner.net/2011/03/02/installing-nuget-on-vs2010-first-blood/) – spinalfrontier

+0

나는 이것을 시험해 본다. VS 2010 SHELL로 제한되어 있기 때문에 Json.Net을 설치할 수있는 버전을 설치하지 않을 것이다. . 논문은 여기에 오류가 있습니다 [링크] (http://stackoverflow.com/questions/43646661/nuget-json-net-install-erros-vs-2010-shell?noredirect=1#comment74341851_43646661) –