C# JsonConvert.DeserializeObject无法加载文件或程序集';System.ComponentModel.Annotations,版本=4.3.0.0,文化 string jsonDoc=@”{ “pricingDetails”

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”

JsonConvert.DeserializeObject无法加载文件或程序集';System.ComponentModel.Annotations,版本=4.3.0.0,文化
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;
        }