Я столкнулся с проблемой при десериализации строки 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; }
}