JSON Проблема десериализации в объектах с иерархией - PullRequest
0 голосов
/ 08 января 2020

Я столкнулся с проблемой при десериализации строки JSON в объект.

Ниже метод дает мне JSON строку в качестве ответа, и пока все нормально.

    public string invokeMobileService(string JSONrequest, string serviceURL, string method)
    {
        HttpWebRequest request = (HttpWebRequest)WebRequest.Create(serviceURL);
        request.Method = method;
        string responseText;
        System.Text.UTF8Encoding encoding = new System.Text.UTF8Encoding();
        Byte[] byteArray = encoding.GetBytes(JSONrequest);

        request.ContentLength = byteArray.Length;
        request.ContentType = @"application/json";

        using (Stream dataStream = request.GetRequestStream())
        {
            dataStream.Write(byteArray, 0, byteArray.Length);
        }

        using (HttpWebResponse response = (HttpWebResponse)request.GetResponse())
        {
            using (var reader = new StreamReader(response.GetResponseStream()))
            {
                JavaScriptSerializer js = new JavaScriptSerializer();
                responseText = reader.ReadToEnd();
            }
        }
        return responseText;
    }

Однако я не могу десериализовать JSON строку в объект, как показано ниже. Массивы дают ноль.

GenericResponse<LookUpsResponse> Gresponse = (GenericResponse<LookUpsResponse>)js.Deserialize(response, typeof(GenericResponse<LookUpsResponse>));

Строка, которую я получаю JSON, довольно сложна, имея несколько массивов в иерархии. Обратите также внимание, что я получаю ответ от службы, которая также разработана мной, и я скопировал те же ответы и классы запросов в эту новую (промежуточную) службу, которую я хочу использовать только для связи с действующей. Нет никакой вероятности, что классы запросов и ответов различны в обеих службах.

{
   "Code": "200",
   "Message": "Request completed Successfully.",
   "ResultSet":    {
      "ProposalDDLs":       {
         "RowState": 0,
         "APPLICATION_STATUS": {"Array":          [
                        {
               "RowState": 1,
               "STATUS": "Addition Inform",
               "STATUS_CODE": "33",
               "STATUS_LOCAL": "暂停-等待"
            },
                        {
               "RowState": 1,
               "STATUS": "App. with Condition",
               "STATUS_CODE": "03",
               "STATUS_LOCAL": "有条件批准"
            }
         ]},
         "Application_Type_CodeLookUp": {"Array":          [
                        {
               "RowState": 1,
               "APPLICANT_IND": "I",
               "APPLICATION_TYPE": "个人",
               "APPLICATION_TYPE_CODE": "00001"
            },
                        {
               "RowState": 1,
               "APPLICANT_IND": "C",
               "APPLICATION_TYPE": "中型企业",
               "APPLICATION_TYPE_CODE": "00003"
            }
         ]},
         "CAPSALARY_RANGE_CODElookup": {"Array":          [
                        {
               "RowState": 1,
               "ACTIVATE_IND": "T",
               "SALARY_RANGE_CDE": "00001",
               "SALARY_RANGE_DSC": "30,001 To 35,000"
            },
                        {
               "RowState": 1,
               "ACTIVATE_IND": "T",
               "SALARY_RANGE_CDE": "00005",
               "SALARY_RANGE_DSC": "30,001 To 35,000"
            }
         ]},
         "Career_TypeLookUp": {"Array":          [
                        {
               "RowState": 1,
               "OCCUPATION_CDE": "00007",
               "OCCUPATION_DSC": "01国家机关、党群组织、企业、事业单位负责人"
            },
                        {
               "RowState": 1,
               "OCCUPATION_CDE": "00008",
               "OCCUPATION_DSC": "02专业技术人员"
            }
         ]},
         "CitizenshipLookUp": {"Array":          [
                        {
               "RowState": 1,
               "ACTIVATE_IND": "T",
               "RACE_CDE": "00005",
               "RACE_DSC": "其他"
            },
                        {
               "RowState": 1,
               "ACTIVATE_IND": "T",
               "RACE_CDE": "00001",
               "RACE_DSC": "中国"
            }
         ]},
         "City_CodeLookUp": {"Array":          [
                        {
               "RowState": 1,
               "ACTIVATE_IND": "F",
               "CITY_CDE": "00354",
               "CITY_NME": "0甘肃本级二(不用)",
               "COUNTRY_CDE": "00086",
               "STATE_CDE": "00026"
            },
                        {
               "RowState": 1,
               "ACTIVATE_IND": "F",
               "CITY_CDE": "00355",
               "CITY_NME": "0甘肃本级三(不用)",
               "COUNTRY_CDE": "00086",
               "STATE_CDE": "00026"
            }
         ]},
         "DDBanklookup": {"Array":          [
                        {
               "RowState": 1,
               "BANK_CDE": "47",
               "BANK_NME": "工商银行"
            },
                        {
               "RowState": 1,
               "BANK_CDE": "52",
               "BANK_NME": "BAIC Internal Bank"
            },
                        {
               "RowState": 1,
               "BANK_CDE": "32446",
               "BANK_NME": "中国农业银行"
            }
         ]},
         "DealerLookUp": {"Array":          [
                        {
               "RowState": 1,
               "BUSINESS_PARTNER_ID": 54,
               "BUSINESS_PARTNER_NME": "北京全福源汽车投资管理有限公司",
               "CITY_CDE": "00001",
               "LEGAL_STATUS_CDE": "00002",
               "PMS_DEALER_NBR": "8002"
            },
                        {
               "RowState": 1,
               "BUSINESS_PARTNER_ID": 57,
               "BUSINESS_PARTNER_NME": "北京天乐国汽汽车技术服务有限公司",
               "CITY_CDE": "00001",
               "LEGAL_STATUS_CDE": "00002",
               "PMS_DEALER_NBR": "60105011"
            }
         ]},
         "Education_CodeLookUp": {"Array":          [
                        {
               "RowState": 1,
               "EDUCATION_CDE": "00001",
               "EDUCATION_DESC": "初中及以下"
            },
                        {
               "RowState": 1,
               "EDUCATION_CDE": "00002",
               "EDUCATION_DESC": "高中"
            }
         ]},
         "HUKOU_CODELOOKUP": {"Array":          [
                        {
               "RowState": 1,
               "Activate_ind": "T",
               "Hukou_cde": "00004",
               "Hukou_dsc": "本地户口"
            },
                        {
               "RowState": 1,
               "Activate_ind": "T",
               "Hukou_cde": "00005",
               "Hukou_dsc": "非本地户口"
            }
         ]},
         "ID_Card_TypeLookUp": {"Array":          [
                        {
               "RowState": 1,
               "ID_CARD_CDE": "00005",
               "ID_CARD_DSC": "港澳通行证"
            },
                        {
               "RowState": 1,
               "ID_CARD_CDE": "00006",
               "ID_CARD_DSC": "临时身份证"
            }
         ]},
         "Industry_Subtype_CodeLookUp": {"Array":          [
                        {
               "RowState": 1,
               "ACTIVATE_IND": "T",
               "INDUSTRY_SUBTYPE_CDE": "00001",
               "INDUSTRY_SUBTYPE_DSC": "电力、热力生产和供应业",
               "INDUSTRY_TYPE_CDE": "00004"
            },
                        {
               "RowState": 1,
               "ACTIVATE_IND": "T",
               "INDUSTRY_SUBTYPE_CDE": "00001",
               "INDUSTRY_SUBTYPE_DSC": "房屋建筑业",
               "INDUSTRY_TYPE_CDE": "00005"
            }
         ]},
         "Industry_Type_CodeLookUp": {"Array":          [
                        {
               "RowState": 1,
               "ACTIVATE_IND": "T",
               "INDUSTRY_TYPE_CDE": "00001",
               "INDUSTRY_TYPE_DSC": "01农、林、牧、渔业"
            },
                        {
               "RowState": 1,
               "ACTIVATE_IND": "T",
               "INDUSTRY_TYPE_CDE": "00002",
               "INDUSTRY_TYPE_DSC": "02采掘业"
            }
         ]},
         "Marital_Status_CodeLookUp": {"Array":          [
                        {
               "RowState": 1,
               "MARITAL_STATUS_CDE": "00002",
               "MARITAL_STATUS_DSC": "单身"
            },
                        {
               "RowState": 1,
               "MARITAL_STATUS_CDE": "00003",
               "MARITAL_STATUS_DSC": "离异"
            }
         ]},
         "Marketing_PersonLookUp": {"Array":          [
                        {
               "RowState": 3,
               "ACTIVATE_IND": "T",
               "BP_MARKETING_PEROSN_ID": 62542,
               "BP_Primary_ID": 62541,
               "BUSINESS_PARTNER_NME": "安邦",
               "ZONE_CDE": "-1"
            },
                        {
               "RowState": 3,
               "ACTIVATE_IND": "T",
               "BP_MARKETING_PEROSN_ID": 11867,
               "BP_Primary_ID": 11866,
               "BUSINESS_PARTNER_NME": "安继恒",
               "ZONE_CDE": "-1"
            }
         ]},
         "Payment_Freq_CodeLookUp": {"Array":          [
                        {
               "RowState": 1,
               "ACTIVATE_IND": "F",
               "FREQUENCY_CDE": "00004",
               "FREQUENCY_DSC": "Half Yearly"
            },
                        {
               "RowState": 1,
               "ACTIVATE_IND": "T",
               "FREQUENCY_CDE": "00001",
               "FREQUENCY_DSC": "Monthly"
            }
         ]},
         "Property_Type_CodeLookUp": {"Array":          [
                        {
               "RowState": 1,
               "ACTIVATE_IND": "T",
               "PROPERTY_TYPE_CDE": "00007",
               "PROPERTY_TYPE_DSC": "集体宿舍"
            },
                        {
               "RowState": 1,
               "ACTIVATE_IND": "T",
               "PROPERTY_TYPE_CDE": "00004",
               "PROPERTY_TYPE_DSC": "家人同住"
            }
         ]},
         "Rank_CodeLookUp": {"Array":          [
                        {
               "RowState": 1,
               "Rank_CDE": "00001",
               "Rank_DESC": "高级职称"
            },
                        {
               "RowState": 1,
               "Rank_CDE": "00002",
               "Rank_DESC": "中级职称"
            }
         ]},
         "Relationship_CodeLookUp": {"Array":          [
                        {
               "RowState": 1,
               "ACTIVATE_IND": "T",
               "CAP_IND": "T",
               "RELATIONSHIP_CDE": "00001",
               "RELATIONSHIP_DSC": "Employer-Employees"
            },
                        {
               "RowState": 1,
               "ACTIVATE_IND": "T",
               "CAP_IND": "F",
               "RELATIONSHIP_CDE": "00002",
               "RELATIONSHIP_DSC": "父母子女 Parent-Child"
            }
         ]},
         "RequiredFields": {"Array":          [
                        {
               "RowState": 1,
               "ENTITY_COLUMN_NAME": "ADDRESS_ONE",
               "ENTITY_TABLE_NAME": "ACCOUNTANT_REFERENCE",
               "REQUIRED": "F"
            },
                        {
               "RowState": 1,
               "ENTITY_COLUMN_NAME": "CITY_CDE",
               "ENTITY_TABLE_NAME": "ACCOUNTANT_REFERENCE",
               "REQUIRED": "F"
            }
         ]},
         "ShowroomLookUp": {"Array":          [
                        {
               "RowState": 1,
               "BP_PRIMARY_ID": 1,
               "BUSINESS_PARTNER_ID": 2,
               "BUSINESS_PARTNER_NME": "财务公司总部"
            },
                        {
               "RowState": 1,
               "BP_PRIMARY_ID": 47,
               "BUSINESS_PARTNER_ID": 48,
               "BUSINESS_PARTNER_NME": "中国工商银行股份有限公司北京科技园支行"
            }
         ]},
         "StateCodeLookUp": {"Array":          [
                        {
               "RowState": 1,
               "ACTIVATE_IND": "T",
               "COUNTRY_CDE": "00086",
               "STATE_CDE": "00019",
               "STATE_NME": "Punjab"
            },
                        {
               "RowState": 1,
               "ACTIVATE_IND": "T",
               "COUNTRY_CDE": "00086",
               "STATE_CDE": "00009",
               "STATE_NME": "Sindh"
            }
         ]}
      },
      "ProposalEnums":       {
         "RowState": 0,
         "ASSET_CONDITIONENUM": {"Array":          [
                        {
               "RowState": 1,
               "DEFINITION": "N",
               "DESCRIPTION": "新车",
               "DESCRIPTION_LOCAL": "新车 New"
            },
                        {
               "RowState": 1,
               "DEFINITION": "U",
               "DESCRIPTION": "二手车",
               "DESCRIPTION_LOCAL": "二手车 Used"
            }
         ]},
         "GENDERENUM": {"Array":          [
                        {
               "RowState": 1,
               "DEFINITION": "F",
               "DESCRIPTION": "女子",
               "DESCRIPTION_LOCAL": "女子"
            },
                        {
               "RowState": 1,
               "DEFINITION": "M",
               "DESCRIPTION": "男子",
               "DESCRIPTION_LOCAL": "男子"
            }
         ]}}
      }
   }

и вот GenericResponse вместе с поиском

  public class GenericResponse<T>
{
    private string code = "200";
    private string message = "Request completed Successfully.";
    private T m_obj;

    [DataMember(EmitDefaultValue = false, Order = 1)]
    public string Code
    {
        set { code = value; }
        get { return code; }
    }

    [DataMember(EmitDefaultValue = false, Order = 2)]
    public string Message
    {
        set { message = value; }
        get { return message; }
    }        

    [DataMember(EmitDefaultValue = false, Order = 3)]
    public T ResultSet { get { return m_obj; } set { m_obj = value; } }          

    public bool HasException()
    {
        return false;
    }

    public GenericResponse()
    {

    }

}

[DataContract(Namespace = "")]
public class LookUpsResponse 
{

    [DataMember(EmitDefaultValue = false, Name = "ProposalDDLs")]
    public AllLookUpResponseEntity ProposalDDLs { get; set; }

    //ProposalEnums   
    [DataMember(EmitDefaultValue = false, Name = "ProposalEnums")]
    public AllLookUpEnumsEntity ProposalEnums { get; set; }


    //[DataMember(EmitDefaultValue = false, Name = "CAPAllUserName")]
    public List<CAPAllUserName> CAPAllUserName { get; set; }

   // [DataMember(EmitDefaultValue = false, Name = "IMAGE_SERVICE_ADDRESS")]
    public string IMAGE_SERVICE_ADDRESS { get; set; }

   // [DataMember(EmitDefaultValue = false, Name = "AMP_REPORT_LINK")]
    public string AMP_REPORT_LINK { get; set; }

    //UAT-198
  //  [DataMember(EmitDefaultValue = false, Name = "Dealer_FPs")]
    public List<ProductTypeLookUp> Dealer_FPs { get; set; }

}
...