C# JsonConvert.DeserializeObject无法加载文件或程序集';System.ComponentModel.Annotations,版本=4.3.0.0,文化 string jsonDoc=@”{ “pricingDetails”
JsonConvert.DeserializeObject无法加载文件或程序集';System.ComponentModel.Annotations,版本=4.3.0.0,文化C# JsonConvert.DeserializeObject无法加载文件或程序集';System.ComponentModel.Annotations,版本=4.3.0.0,文化 string jsonDoc=@”{ “pricingDetails”,c#,json,C#,Json,JsonConvert.DeserializeObject无法加载文件或程序集';System.ComponentModel.Annotations,版本=4.3.0.0,文化 string jsonDoc=@”{ “pricingDetails”:[{ “pricingStrategyId”:1, “pricingStrategy”:{ “id”:1, “名称”:“预付费固定”, “显示文本”:“预付固定金额”, “”说明“”:“”在进场时现场支付固定价格。“” }, “siteId”
string jsonDoc=@”{
“pricingDetails”:[{
“pricingStrategyId”:1,
“pricingStrategy”:{
“id”:1,
“名称”:“预付费固定”,
“显示文本”:“预付固定金额”,
“”说明“”:“”在进场时现场支付固定价格。“”
},
“siteId”:262,
“地点”:{
“id”:262,
“buildingId”:64,
“站点名称”:“测试站点”,
“siteDescription”:“test1”,
“”isListed“”:null,
“listedDateTime”:null,
“SiteAfterhousInstructions”:null,
“archiveDateTime”:null,
“archivedBy”:null,
“createdDateTime”:“2019-04-09T00:00:00”,
“modifyDateTime:”2019-04-09T14:59:54.87“,
“状态ID”:5,
“siteMaxHeight”:“2.1”,
“业务注册ID”:“2019-105A110BU69L64B262”,
“商业银行编号:”48 110 366 946“,
“商业电话号码”:“0290171292”,
“businessFaxNumber”“:”“”,
“bankAccountName”:空,
“bankAccountNumber”:空,
“bankBsbnumber”:空,
“银行电子邮件地址”:空,
“physicalAddressLine2”:”,
“物理地址郊区”:“悉尼”,
“物理地址状态”:“新南威尔士州”,
“物理地址邮政编码”:2000,
“postalAddressLine2”:”,
“邮递服务”:“悉尼”,
“后州”:“新南威尔士州”,
“邮政编码”:2000,
“entryAddressLine2”:null,
“exitAddressLine2”:空,
“bankReferenceNo”:null,
“isGstregistered”:空,
“refParentBankDets”:false,
“canTakePayments”:false,
“siteOpenTime”:60,
“siteCloseTime”:1260,
“siteAccessOpenTime”:360,
“siteAccessCloseTime”:1080,
“占用类型ID”:2,
“siteNotes”:null,
“securityType”:true,
“密钥传递”:3,
“keyInstrPickup”:null,
“keyInstrReturn”:null,
“smartCmsgLine1”:空,
“smartCmsgLine2”:空,
“instrGracePeriod”:null,
“instrOverstay”:null,
“isUnusedBay”:false,
“navStatusId”:0,
“navErrorMsg”:空,
“priorityPass”:null,
“SiteCommission”:0,
“entryGracePeriod”:null,
“exitGracePeriod”:null,
“bookableDays”:null,
“checkQuota”:null,
“totalSpaces”:null
},
“天”:31,
“entryTimeOffset”:360,
“exitTimeOffset”:1080,
“价格”:7.00
}
],
“相关设备”:[{
“id”:15,
“siteId”:262,
“roleId”:2,
“角色”:{
“id”:2,
“名称”:“SC”,
“”说明“”:“”显示设备“”
},
“sideId”:1,
“侧面”:{
“id”:1,
“名称”:“中的”
},
“巷”:1,
“设备组”:“实时”
}, {
“id”:17,
“siteId”:262,
“uid”:“synorb1-exit1-ptg”,
“roleId”:4,
“角色”:{
“id”:4,
“名称”:“PTG”,
“”说明“”:“”支付设备“”
},
“sideId”:1,
“侧面”:{
“id”:1,
“名称”:“中的”
},
“巷”:1,
“设备组”:“实时”
}
]
}
"
var obj=JsonConvert.DeserializeObject(jsonDoc);
==================================
公共类停车设施
{
公共列表PricingDetails{get;set;}
公共列表相关设备{get;set;}
}
公共类休闲促销价格明细SVM
{
public int PricingStrategyId{get;set;}
公共虚拟休闲营销策略PricingStrategyVM PricingStrategy{get;set;}
public int SiteId{get;set;}
公共虚拟站点SVM站点{get;set;}
//枚举天数|
公共整数天{get;set;}
public int?EntryTimeOffset{get;set;}
公共int?ExitTimeOffset{get;set;}
公共十进制价格{get;set;}
}
公共类休闲营销策略
{
公共int Id{get;set;}
公共字符串名称{get;set;}
公共字符串DisplayText{get;set;}
公共字符串说明{get;set;}
}
公共类站点
{
公共网站
{
//Bookings=newhashset();
//InventoryEntityRelationship=新哈希集();
//ParkingTypes=新哈希集();
//SiteLicenses=new HashSet();
//SiteTimeZones=new HashSet();
//空格=新的HashSet();
}
公共int Id{get;set;}
public int BuildingId{get;set;}
公共字符串SiteName{get;set;}
//公共字符串照片{get;set;}
//公共bool?HasOnSiteStaff{get;set;}
//SiteStaffNotes{get;set;}上的公共字符串
公共字符串SiteDescription{get;set;}
公共bool?IsListed{get;set;}
公共日期时间?ListedDateTime{get;set;}
公众的
string jsonDoc = @"{
""pricingDetails"": [{
""pricingStrategyId"": 1,
""pricingStrategy"": {
""id"": 1,
""name"": ""PREPAY_FIXED"",
""displayText"": ""Prepay fixed"",
""description"": ""Pay onsite a fixed price at entry.""
},
""siteId"": 262,
""site"": {
""id"": 262,
""buildingId"": 64,
""siteName"": ""Test Site"",
""siteDescription"": ""test1"",
""isListed"": null,
""listedDateTime"": null,
""siteAfterHoursInstructions"": null,
""archiveDateTime"": null,
""archivedBy"": null,
""createdDateTime"": ""2019-04-09T00:00:00"",
""modifyDateTime"": ""2019-04-09T14:59:54.87"",
""statusId"": 5,
""siteMaxHeight"": ""2.1"",
""businessRegistrationId"": ""2019-105A110BU69L64B262"",
""businessAbnOracnNumber"": ""48 110 366 946"",
""businessPhoneNumber"": ""02 9017 1292"",
""businessFaxNumber"": """",
""bankAccountName"": null,
""bankAccountNumber"": null,
""bankBsbnumber"": null,
""bankEmailAddresses"": null,
""physicalAddressLine2"": """",
""physicalAddressSuburb"": ""Sydney"",
""physicalAddressState"": ""NSW"",
""physicalAddressPostcode"": 2000,
""postalAddressLine2"": """",
""postalAddressSuburb"": ""Sydney"",
""postalAddressState"": ""NSW"",
""postalAddressPostcode"": 2000,
""entryAddressLine2"": null,
""exitAddressLine2"": null,
""bankReferenceNo"": null,
""isGstregistered"": null,
""refParentBankDets"": false,
""canTakePayments"": false,
""siteOpenTime"": 60,
""siteCloseTime"": 1260,
""siteAccessOpenTime"": 360,
""siteAccessCloseTime"": 1080,
""occupiedTypeId"": 2,
""siteNotes"": null,
""securityType"": true,
""keyDelivery"": 3,
""keyInstrPickup"": null,
""keyInstrReturn"": null,
""smartCmsgLine1"": null,
""smartCmsgLine2"": null,
""instrGracePeriod"": null,
""instrOverstay"": null,
""isUnusedBay"": false,
""navStatusId"": 0,
""navErrorMsg"": null,
""priorityPass"": null,
""siteCommision"": 0,
""entryGracePeriod"": null,
""exitGracePeriod"": null,
""bookableDays"": null,
""checkQuota"": null,
""totalSpaces"": null
},
""days"": 31,
""entryTimeOffset"": 360,
""exitTimeOffset"": 1080,
""price"": 7.00
}
],
""relatedDevices"": [{
""id"": 15,
""siteId"": 262,
""roleId"": 2,
""role"": {
""id"": 2,
""name"": ""SC"",
""description"": ""Display device""
},
""sideId"": 1,
""side"": {
""id"": 1,
""name"": ""IN""
},
""lane"": 1,
""deviceGroup"": ""Live""
}, {
""id"": 17,
""siteId"": 262,
""uid"": ""synorb1-exit1-ptg"",
""roleId"": 4,
""role"": {
""id"": 4,
""name"": ""PTG"",
""description"": ""Payment device""
},
""sideId"": 1,
""side"": {
""id"": 1,
""name"": ""IN""
},
""lane"": 1,
""deviceGroup"": ""Live""
}
]
}
"
var obj = JsonConvert.DeserializeObject<ParkingOfferDetailsDTO>(jsonDoc);
==================================
public class ParkingOfferDetailsDTO
{
public List<CasualParkingPricingDetailsVM> PricingDetails { get; set; }
public List<AccessDeviceVM> RelatedDevices { get; set; }
}
public class CasualParkingPricingDetailsVM
{
public int PricingStrategyId { get; set; }
public virtual CasualParkingPricingStrategyVM PricingStrategy { get; set; }
public int SiteId { get; set; }
public virtual SitesVM Site { get; set; }
// Enum.Days |
public int Days { get; set; }
public int? EntryTimeOffset { get; set; }
public int? ExitTimeOffset { get; set; }
public decimal Price { get; set; }
}
public class CasualParkingPricingStrategyVM
{
public int Id { get; set; }
public string Name { get; set; }
public string DisplayText { get; set; }
public string Description { get; set; }
}
public class SitesVM
{
public SitesVM()
{
//Bookings = new HashSet<Bookings>();
//InventoryEntityRelationship = new HashSet<InventoryEntityRelationship>();
//ParkingTypes = new HashSet<ParkingTypes>();
//SiteLicenses = new HashSet<SiteLicenses>();
//SiteTimeZones = new HashSet<SiteTimeZonesVM>();
//Spaces = new HashSet<Spaces>();
}
public int Id { get; set; }
public int BuildingId { get; set; }
public string SiteName { get; set; }
//public string Photos { get; set; }
//public bool? HasOnSiteStaff { get; set; }
//public string OnSiteStaffNotes { get; set; }
public string SiteDescription { get; set; }
public bool? IsListed { get; set; }
public DateTime? ListedDateTime { get; set; }
public string SiteAfterHoursInstructions { get; set; }
public DateTime? ArchiveDateTime { get; set; }
public string ArchivedBy { get; set; }
public string CreatedBy { get; set; }
public DateTime CreatedDateTime { get; set; }
public string ModifiedBy { get; set; }
public DateTime ModifyDateTime { get; set; }
public int StatusId { get; set; }
public string SiteMaxHeight { get; set; }
public string BusinessName { get; set; }
public string BusinessRegistrationId { get; set; }
public string BusinessAbnOracnNumber { get; set; }
public string BusinessPhoneNumber { get; set; }
public string BusinessEmail { get; set; }
public string BusinessFaxNumber { get; set; }
public string BankAccountName { get; set; }
public string BankAccountNumber { get; set; }
public string BankBsbnumber { get; set; }
public string BankEmailAddresses { get; set; }
public string PhysicalAddressLine1 { get; set; }
public string PhysicalAddressLine2 { get; set; }
public string PhysicalAddressSuburb { get; set; }
public string PhysicalAddressState { get; set; }
public int PhysicalAddressPostcode { get; set; }
public string PostalAddressLine1 { get; set; }
public string PostalAddressLine2 { get; set; }
public string PostalAddressSuburb { get; set; }
public string PostalAddressState { get; set; }
public int? PostalAddressPostcode { get; set; }
public string EntryAddressLine2 { get; set; }
public string ExitAddressLine2 { get; set; }
public string BankReferenceNo { get; set; }
public bool? IsGstregistered { get; set; }
public bool RefParentBankDets { get; set; }
public bool CanTakePayments { get; set; }
public short? SiteOpenTime { get; set; }
public short? SiteCloseTime { get; set; }
public short? SiteAccessOpenTime { get; set; }
public short? SiteAccessCloseTime { get; set; }
public int OccupiedTypeId { get; set; }
public string SiteNotes { get; set; }
public bool SecurityType { get; set; }
public int? KeyDelivery { get; set; }
public string KeyInstrPickup { get; set; }
public string KeyInstrReturn { get; set; }
public string SmartCmsgLine1 { get; set; }
public string SmartCmsgLine2 { get; set; }
public string InstrGracePeriod { get; set; }
public string InstrOverstay { get; set; }
public bool IsUnusedBay { get; set; }
public byte NavStatusId { get; set; }
public string NavErrorMsg { get; set; }
public string EntryAddressLine1 { get; set; }
public string EntryAddressSuburb { get; set; }
public string EntryAddressState { get; set; }
public int? EntryAddressPostcode { get; set; }
public string ExitAddressLine1 { get; set; }
public string ExitAddressSuburb { get; set; }
public string ExitAddressState { get; set; }
public int? ExitAddressPostcode { get; set; }
public bool? IsPublicSearchable { get; set; }
public string PriorityPass { get; set; }
public float SiteCommision { get; set; }
public short? EntryGracePeriod { get; set; }
public short? ExitGracePeriod { get; set; }
public int? BookableDays { get; set; }
public bool? CheckQuota { get; set; }
public int? TotalSpaces { get; set; }
//public virtual Buildings Building { get; set; }
//public virtual RefNavStatus NavStatus { get; set; }
//public virtual RefStatus Status { get; set; }
//public virtual ICollection<Bookings> Bookings { get; set; }
//public virtual ICollection<InventoryEntityRelationship> InventoryEntityRelationship { get; set; }
//public virtual ICollection<ParkingTypes> ParkingTypes { get; set; }
//public virtual ICollection<SiteLicenses> SiteLicenses { get; set; }
//public virtual ICollection<SiteTimeZonesVM> SiteTimeZones { get; set; }
//public virtual ICollection<Spaces> Spaces { get; set; }
}
public class AccessDeviceVM
{
public int Id { get; set; }
[Required]
public int SiteId { get; set; }
[Required]
public string UID { get; set; }
[Required]
public int RoleId { get; set; }
public AccessDeviceRoleVM Role { get; set; }
[Required]
public int SideId { get; set; }
public AccessDeviceSideVM Side { get; set; }
[Required]
public int Lane { get; set; }
[Required]
public string DeviceGroup { get; set; }
}
public class AccessDeviceRoleVM
{
public int Id { get; set; }
public string Name { get; set; }
public string Description { get; set; }
}
public class AccessDeviceSideVM
{
public int Id { get; set; }
public string Name { get; set; }
}
// Created a JsonSerializerSettings and passed it to DeserializeObject
var jsonSettings = new JsonSerializerSettings { Error = ErrorHandler };
JsonConvert.DeserializeObject<ParkingOfferDetailsDTO>(responseJson, jsonSettings);
/// Actual handler method
List<string> errors = new List<string>();
private void ErrorHandler(object sender, ErrorEventArgs e)
{
errors.Add(e.ErrorContext.Error.Message);
e.ErrorContext.Handled = true;
}