Search code examples
c#asp.net.netssisscript-task

Error at serializer Deserialize in C# code


I am trying to load the data from the API which consists of JSON data in C#. But I am getting an error when I am trying to serializer.Deserialize<Dictionary<string,string>[]> the data.

Below is the sample API data for one record

   "_index": "reportingp",
   "_type": "_doc",
   "_id": "9484478",
   "_version": 1,
   "_seq_no": 493807,
   "_primary_term": 1,
   "found": true,
   "_source": {
       "claimNumber": "1234567890",
       "claimICN": "999999",
       "claimStatus": "A",
       "claimType": "I",
       "claimFirstDateService": "2022-01-08",
       "claimLastDateService": "2022-01-08",
       "isBehaviourHealth": "false",
       "claimPatientAccountNumber": "885214L",
       "claimBillingAmount": "18281.52",
       "claimPaidAmount": "872.47",
       "claimCAE": "UHONE",
       "subscriberId": "100937717",
       "memberId": "100937717",
       "subscriberFirstName": "KARIMA",
       "subscriberLastName": "AQATRANI",
       "subscriberDateOfBirth": "1962-05-02",
       "subscriberAddress": "2807 MERRILL ST ",
       "patientFirstName": "KARIMA",
       "patientLastName": "AQATRANI",
       "patientMiddleName": "S",
       "patientDateOfBirth": "1962-05-02",
       "govProgramCode": "1",
       "coverageStartDate": "2017-03-01",
       "coverageEndDate": "9999-12-31",
       "groupNumber": "NEA6",
       "relationshipCode": "EE",
       "sourceId": "lkio789456",
       "billingMpin": "002629478",
       "billingProviderName": "Mercy Gilbert Medical Center",
       "renderingMpin": "002629478",
       "ticketNumber": "9484478",
       "tpsmCode": "S",
       "ticketTpsmIndicator": "418",
       "ticketTpsmDescription": "STRATEGIC_WEST_DIGNITY HEALTH",
       "ticketTpsmEffectiveDate": "2017-03-23",
       "ticketSubmissionDate": "2022-02-01",
       "ticketSubmitterName": "Akash Sangal",
       "ticketType": "Recon",
       "ticketQueue": "UHONE",
       "providerTin": "63845",
       "policyNumber": "D",
       "ticketStatus": "Under Review",
       "requestReasonAdjuster": "Paper or Electronic Check",
       "ticketSubmitterEmail": "[email protected]",
       "ticketSubmitterPhone": "1111111111",
       "amountOwned": "11.00",
       "amountOwnedFlag": "N",
       "ticketAssigneeName": "Agarwal, Sagar",
       "ticketAssigneeId": "sagarw79",
       "ticketConclusion": "On Hold",
       "ticketLastUpdated": "2022-02-01",
       "ticketLastUpdatedBy": "sagarw79",
       "claimSubmissionTransactionId": "N/A",
       "sourceApplication": "SDE",
       "serviceProviderLastName": "Mercy Gilbert Medical Center",
       "productId": "NESHADCP",
       "depedentSequenceNumber": "01",
       "stateOfIssue": "NE",
       "subscriberAddressLine1": "2807 MERRILL ST",
       "subscriberCity": "LINCOLN",
       "subscriberState": "NE",
       "subscriberZip5": "68503",
       "billingType": "131",
       "claimIndicator": "O",
       "claimRecievedDate": "2022-01-19",
       "ticketLastUpdatedName": "Agarwal, Sagar",
       "ticketTpsmCancelDate": "9999-12-31",
       "planBenefitTypeCode": "MD",
       "claimNetworkStatus": "O",
       "offshoreRestricted": "N",
       "isEmployeeRestricted": "N",
       "providerComments": "test",
       "platform": "UHONE",
       "payerId": "87726",
       "payerName": "HealthCare",
       "kafkaWorkflow": "COMPLETED",
       "providerRequestReason": "Paper or Electronic Check",
       "resubmissionCount": "0",
       "isClosed": "no",
       "assignedTopic": "kaas.g",
       "cu_ticketSubmittedDate_date": "2022-02-01 09:15:23",
       "cu_ticketLastUpdated_date": "2022-02-01 09:29:34.978",
       "cu_ticketNumber": "PIQ-9484478",
       "cu_totalAttachments_int": 0,
       "cu_resubmission_count_int": 0,
       "cu_bizAge_int": 1,
       "actualClaimNumber": "1234567890",
       "coverageType": "M",
       "facetsprovIdBilling": "99999999",
       "facetsprovIdRendering": "99999999",
       "ticketResubmissions": [
           {
               "openDate": "2022-02-01"
           }
       ],
       "ticketComments": [
           {
               "comment": "test",
               "category": "External",
               "createdBy": "Akash Sangal",
               "createDate": "2022-02-01",
               "reconRequestReason": "Paper or Electronic Check"
           },
           {
               "comment": "Received, working on request.",
               "category": "Internal",
               "createdBy": "Agarwal, Sagar",
               "ticketStatus": "Under Review",
               "createDate": "2022-02-01",
               "conclusion": "On Hold",
               "reconRequestReason": "Paper or Electronic Check",
               "createdById": "98765we"
           }
       ]
   }
}

Below is the C# Code which I am trying to pull the data from API,

I am implementing this in visual studio 2017 data tools script component.

               string connetionString = null;
                string sql = null;
                string serviceUrl = "http://URLLINK/reportingp/_doc/9484478";
                HttpClient client = new HttpClient();
                client.BaseAddress = new Uri(serviceUrl);
                var serializer = new JavaScriptSerializer();

                // Add an Accept header for JSON format.   

                client.DefaultRequestHeaders.Accept.Add(newMediaTypeWithQualityHeaderValue("application/json"));
                  
                var plainTextBytes = System.Text.Encoding.UTF8.GetBytes("Username:Password");
                string val = System.Convert.ToBase64String(plainTextBytes);
                client.DefaultRequestHeaders.Add("Authorization", "Basic " + val);

                connetionString = "Data Source=Bharat_PC;Initial Catalog=Practice_OPS; Trusted_Connection=True;";

                string APIUrl = string.Format(serviceUrl);
                var response = client.GetAsync(APIUrl).Result;
                if (response.IsSuccessStatusCode)

                {

                    var result = response.Content.ReadAsStringAsync().Result;
                    MessageBox.Show(result);

                    var dt = serializer.Deserialize<Dictionary<string,string>[]>(result);

                    using (SqlConnection cnn = new SqlConnection(connetionString))```


In the MessageBox.Show(result); I am getting the output but in the next step while doing *serializer.Deserialize<Dictionary<string,string>[]>(result)* I am getting the error. Tried so many approaches but I am unable to fix it. Please help me with the solution.

Solution

  • You can try it with below

    public class APIResponse
    {
        public string _index { get; set; }
        public string _type { get; set; }
        public string _id { get; set; }
        public int _version { get; set; }
        public int _seq_no { get; set; }
        public int _primary_term { get; set; }
        public bool found { get; set; }
        public Source _source { get; set; }
    }
    
    public class Source
    {
        public string claimNumber { get; set; }
        public string claimICN { get; set; }
        public string claimStatus { get; set; }
        public string claimType { get; set; }
        public string claimFirstDateService { get; set; }
        public string claimLastDateService { get; set; }
        public string isBehaviourHealth { get; set; }
        public string claimPatientAccountNumber { get; set; }
        public string claimBillingAmount { get; set; }
        public string claimPaidAmount { get; set; }
        public string claimCAE { get; set; }
        public string subscriberId { get; set; }
        public string memberId { get; set; }
        public string subscriberFirstName { get; set; }
        public string subscriberLastName { get; set; }
        public string subscriberDateOfBirth { get; set; }
        public string subscriberAddress { get; set; }
        public string patientFirstName { get; set; }
        public string patientLastName { get; set; }
        public string patientMiddleName { get; set; }
        public string patientDateOfBirth { get; set; }
        public string govProgramCode { get; set; }
        public string coverageStartDate { get; set; }
        public string coverageEndDate { get; set; }
        public string groupNumber { get; set; }
        public string relationshipCode { get; set; }
        public string sourceId { get; set; }
        public string billingMpin { get; set; }
        public string billingProviderName { get; set; }
        public string renderingMpin { get; set; }
        public string ticketNumber { get; set; }
        public string tpsmCode { get; set; }
        public string ticketTpsmIndicator { get; set; }
        public string ticketTpsmDescription { get; set; }
        public string ticketTpsmEffectiveDate { get; set; }
        public string ticketSubmissionDate { get; set; }
        public string ticketSubmitterName { get; set; }
        public string ticketType { get; set; }
        public string ticketQueue { get; set; }
        public string providerTin { get; set; }
        public string policyNumber { get; set; }
        public string ticketStatus { get; set; }
        public string requestReasonAdjuster { get; set; }
        public string ticketSubmitterEmail { get; set; }
        public string ticketSubmitterPhone { get; set; }
        public string amountOwned { get; set; }
        public string amountOwnedFlag { get; set; }
        public string ticketAssigneeName { get; set; }
        public string ticketAssigneeId { get; set; }
        public string ticketConclusion { get; set; }
        public string ticketLastUpdated { get; set; }
        public string ticketLastUpdatedBy { get; set; }
        public string claimSubmissionTransactionId { get; set; }
        public string sourceApplication { get; set; }
        public string serviceProviderLastName { get; set; }
        public string productId { get; set; }
        public string depedentSequenceNumber { get; set; }
        public string stateOfIssue { get; set; }
        public string subscriberAddressLine1 { get; set; }
        public string subscriberCity { get; set; }
        public string subscriberState { get; set; }
        public string subscriberZip5 { get; set; }
        public string billingType { get; set; }
        public string claimIndicator { get; set; }
        public string claimRecievedDate { get; set; }
        public string ticketLastUpdatedName { get; set; }
        public string ticketTpsmCancelDate { get; set; }
        public string planBenefitTypeCode { get; set; }
        public string claimNetworkStatus { get; set; }
        public string offshoreRestricted { get; set; }
        public string isEmployeeRestricted { get; set; }
        public string providerComments { get; set; }
        public string platform { get; set; }
        public string payerId { get; set; }
        public string payerName { get; set; }
        public string kafkaWorkflow { get; set; }
        public string providerRequestReason { get; set; }
        public string resubmissionCount { get; set; }
        public string isClosed { get; set; }
        public string assignedTopic { get; set; }
        public string cu_ticketSubmittedDate_date { get; set; }
        public string cu_ticketLastUpdated_date { get; set; }
        public string cu_ticketNumber { get; set; }
        public int cu_totalAttachments_int { get; set; }
        public int cu_resubmission_count_int { get; set; }
        public int cu_bizAge_int { get; set; }
        public string actualClaimNumber { get; set; }
        public string coverageType { get; set; }
        public string facetsprovIdBilling { get; set; }
        public string facetsprovIdRendering { get; set; }
        public List<TicketResubmission> ticketResubmissions { get; set; }
        public List<TicketComment> ticketComments { get; set; }
    }
    
    public class TicketComment
    {
        public string comment { get; set; }
        public string category { get; set; }
        public string createdBy { get; set; }
        public string createDate { get; set; }
        public string reconRequestReason { get; set; }
        public string ticketStatus { get; set; }
        public string conclusion { get; set; }
        public string createdById { get; set; }
    }
    
    public class TicketResubmission
    {
        public string openDate { get; set; }
    }
    

    And inside HTTPRequest Success response block

    serializer.Deserialize<APIResponse>(result);