Json 嵌套复杂数组到 Web Api 2.0 控制器操作
Json Nested Complex Array to Web Api 2.0 Controller Action
好的帮派。我遇到了一个似乎非常流行但非常未解决(至少对我而言)的问题。我在 Fiddler 中有以下请求 body:
{
"Type": "WQ",
"Customer": "1600",
"JobNbr": "1zAlpha - BLAHDYBLOO",
"Delivery": 1,
"Pickup": 1,
"DelInst": "Location: Earth
",
"StartDate": "2017-02-28",
"StartTime": "1700",
"EndDate": "2017-03-15",
"EndTime": "1700",
"CustTransactionId": "555",
"EquipmentItems": {
"EquipmentItem":
[
{
"Equipment": "0500006",
"CatID": "050",
"ClassID": "0006",
"LineSeq": "1",
"Quantity": "001"
},
{
"Equipment": "0500007",
"CatID": "050",
"ClassID": "0007",
"LineSeq": "2",
"Quantity": "001"
}
]},
"CustomerFields": {
"blah": "12345",
"blah blah": "123",
"blah blah blah": "WHATEVER"
}
}
如您所见,我有一个复杂的 "Reservation" object,其中包含一个 "Equipment" object 的嵌套数组以及一个复杂的键值列表客户可能发送给我们的对,我们称之为 CustomerFields。
当我通过 fiddler 将其发送到控制器的操作时,parent class 按预期出现,但嵌套的设备数组和 CustomerFields object 为空。
我的 headers 看起来像这样:
Content-Type: application/json; charset=utf-8
Accept: application/json, text/javascript, /; q=0.01
Host: localhost:51493
Content-Length: 1209
我的动作签名如下:
Post([FromBody]Reservation reservation)
并且每个 class 分别用 [JsonObjec] 或 [Json属性] 装饰,我尝试删除 Json "names" 来自 json body。我需要做什么才能从 fiddler 获取我的控制器中完全填充的 object?我需要做 json 数据调整吗?代码调整?两个都?我完全不知所措。我已经尝试了很多不同的排列,在这一点上列出它们会适得其反。
提前感谢您的帮助。
预订Class定义:
[JsonObject]
public partial class Reservation : IReservation
{
#region private fields
private string companyField;
private int? locationField;
private ReservationType typeField;
private string customerField;
private string custTransactionIDField;
private Guid sbrTransactionIDField;
private string licenseField;
private string dlStateField;
private string jobNbrField;
private bool deliveryField;
private bool pickupField;
private string deliveryInstructionsField;
private DateTime startDateField;
private DateTime endDateField;
private string customerPOField;
private string webUserField;
private bool rPPFlagField;
private bool fuelFlagField;
private decimal deliveryChargeField;
private decimal pickupChargeField;
private CustomerDataList customerDataField;
private EquipmentItems itemsField;
#endregion
#region Public properties
/// <remarks/>
public int? ReservationNo { get; set; }
/// <remarks/>
public string Company
{
get
{
return this.companyField;
}
set
{
this.companyField = value;
}
}
/// <remarks/>
public int? Location
{
get
{
return this.locationField;
}
set
{
this.locationField = (value != null) ? value : -1;
}
}
/// <remarks/>
public ReservationType Type
{
get
{
return this.typeField;
}
set
{
this.typeField = value;
}
}
/// <remarks/>
public string Customer
{
get
{
return this.customerField;
}
set
{
this.customerField = value;
}
}
/// <remarks/>
public string CustTransactionID
{
get
{
return this.custTransactionIDField != null ? custTransactionIDField : string.Empty;
}
set
{
this.custTransactionIDField = value;
}
}
/// <remarks/>
public Guid SBRTransactionID
{
get
{
return this.sbrTransactionIDField;
}
set
{
this.sbrTransactionIDField = value;
}
}
/// <remarks/>
public string License
{
get
{
return this.licenseField;
}
set
{
this.licenseField = value;
}
}
/// <remarks/>
public string DlState
{
get
{
return this.dlStateField;
}
set
{
this.dlStateField = value;
}
}
/// <remarks/>
public string JobNbr
{
get
{
return this.jobNbrField;
}
set
{
this.jobNbrField = value;
}
}
/// <remarks/>
public bool Delivery
{
get
{
return this.deliveryField;
}
set
{
this.deliveryField = value;
}
}
public bool Pickup
{
get
{
return this.pickupField;
}
set
{
this.pickupField = value;
}
}
/// <remarks/>
public string DeliveryInstructions
{
get
{
return this.deliveryInstructionsField;
}
set
{
this.deliveryInstructionsField = value;
}
}
/// <remarks/>
public System.DateTime StartDate
{
get
{
return this.startDateField;
}
set
{
this.startDateField = value;
}
}
public string StartTime { get; set; }
public string EndTime { get; set; }
/// <remarks/>
public System.DateTime EndDate
{
get
{
return this.endDateField;
}
set
{
this.endDateField = value;
}
}
/// <remarks/>
public string CustomerPO
{
get
{
return this.customerPOField;
}
set
{
this.customerPOField = value;
}
}
/// <remarks/>
public string WebUser
{
get
{
return this.webUserField;
}
set
{
this.webUserField = value;
}
}
/// <remarks/>
public bool RPPFlag
{
get
{
return this.rPPFlagField;
}
set
{
this.rPPFlagField = value;
}
}
/// <remarks/>
public bool FuelFlag
{
get
{
return this.fuelFlagField;
}
set
{
this.fuelFlagField = value;
}
}
/// <remarks/>
public decimal DeliveryCharge
{
get
{
return this.deliveryChargeField;
}
set
{
this.deliveryChargeField = value;
}
}
/// <remarks/>
public decimal PickupCharge
{
get
{
return this.pickupChargeField;
}
set
{
this.pickupChargeField = value;
}
}
[System.Xml.Serialization.XmlArrayItemAttribute("EquipmentItems", IsNullable = false)]
[JsonProperty]
public EquipmentItems Items
{
get
{
return this.itemsField;
}
set
{
this.itemsField = value;
}
}
/// <remarks/>
public CustomerDataList CustomerData
{
get
{
return this.customerDataField;
}
set
{
this.customerDataField = value;
}
}
List<IItemData> IReservation.Items
{
get
{
return this.itemsField.ToList<IItemData>();
}
set
{
SetItems(value);
}
}
/// <remarks/>
#endregion
private void SetItems(List<IItemData> items)
{
this.itemsField = ((EquipmentItems)((IEnumerable<EquipmentItem>)items.Select(e => e.CatID == e.CatID)));
}
}
#endregion
装备物品定义:
[JsonObject]
public partial class EquipmentItems : List<EquipmentItem>
{ }
[JsonObject]
public partial class EquipmentItem : IItemData
{
#region Private fields
private string equipmentIDField;
private string catIDField;
private string classIDField;
private string lineSequenceField;
private string quantityField;
private string toolFlexField;
private string hourlyRateField;
private string dailyRateField;
private string weeklyRateField;
private string monthlyRateField;
private string minRateField;
private bool daysOverField;
private bool weeksOverField;
private bool monthsOverField;
#endregion
#region Public properties
/// <remarks/>
public string Equipment
{
get
{
return this.equipmentIDField;
}
set
{
this.equipmentIDField = value;
}
}
/// <remarks/>
public string CatID
{
get
{
return this.catIDField;
}
set
{
this.catIDField = value;
}
}
/// <remarks/>
public string ClassID
{
get
{
return this.classIDField;
}
set
{
this.classIDField = value;
}
}
/// <remarks/>
public string LineSeq
{
get
{
return this.lineSequenceField;
}
set
{
this.lineSequenceField = value;
}
}
/// <remarks/>
public string Quantity
{
get
{
return this.quantityField;
}
set
{
this.quantityField = value;
}
}
/// <remarks/>
public string ToolFlex
{
get
{
return this.toolFlexField;
}
set
{
this.toolFlexField = value;
}
}
/// <remarks/>
public string HrRate
{
get
{
return this.hourlyRateField;
}
set
{
this.hourlyRateField = value;
}
}
/// <remarks/>
public string DayRate
{
get
{
return this.dailyRateField;
}
set
{
this.dailyRateField = value;
}
}
/// <remarks/>
public string WkRate
{
get
{
return this.weeklyRateField;
}
set
{
this.weeklyRateField = value;
}
}
public string MinRate
{
get
{
return this.minRateField;
}
set
{
this.minRateField = value;
}
}
/// <remarks/>
public string MoRate
{
get
{
return this.monthlyRateField;
}
set
{
this.monthlyRateField = value;
}
}
/// <remarks/>
public bool DayOver
{
get
{
return this.daysOverField;
}
set
{
this.daysOverField = value;
}
}
/// <remarks/>
public bool WkOver
{
get
{
return this.weeksOverField;
}
set
{
this.weeksOverField = value;
}
}
/// <remarks/>
public bool MoOver
{
get
{
return this.monthsOverField;
}
set
{
this.monthsOverField = value;
}
}
#endregion
}
json 和 class defs 之间存在增量的可能性几乎为 0%,因为我对两者都使用了自动化工具。但如果你能帮我弄清楚 EquipmentItems 数组,那就足够了。再次感谢。
如果您期望 class 结构,我认为您的 json 不太正确。我已经删除了 EquipmentItem 下的数组并将 EquipmentItems 更改为一个数组:
{
"Type": "WQ",
"Customer": "1600",
"JobNbr": "1zAlpha - BLAHDYBLOO",
"Delivery": 1,
"Pickup": 1,
"DelInst": "Location: Earth
",
"StartDate": "2017-02-28",
"StartTime": "1700",
"EndDate": "2017-03-15",
"EndTime": "1700",
"CustTransactionId": "555",
"EquipmentItems": [{
"Equipment": "0500006",
"CatID": "050",
"ClassID": "0006",
"LineSeq": "1",
"Quantity": "001"
}, {
"Equipment": "0500007",
"CatID": "050",
"ClassID": "0007",
"LineSeq": "2",
"Quantity": "001"
}
],
"CustomerFields": {
"blah": "12345",
"blah blah": "123",
"blah blah blah": "WHATEVER"
}
}
[JsonObject]
public partial class Reservation : IReservation
{
#region private fields
private string companyField;
private int? locationField;
private ReservationType typeField;
private string customerField;
private string custTransactionIDField;
private Guid sbrTransactionIDField;
private string licenseField;
private string dlStateField;
private string jobNbrField;
private bool deliveryField;
private bool pickupField;
private string deliveryInstructionsField;
private DateTime startDateField;
private DateTime endDateField;
private string customerPOField;
private string webUserField;
private bool rPPFlagField;
private bool fuelFlagField;
private decimal deliveryChargeField;
private decimal pickupChargeField;
private CustomerDataList customerDataField;
private List<EquipmentItem> itemsField;
#endregion
#region Public properties
/// <remarks/>
public int? ReservationNo { get; set; }
/// <remarks/>
public string Company
{
get
{
return this.companyField;
}
set
{
this.companyField = value;
}
}
/// <remarks/>
public int? Location
{
get
{
return this.locationField;
}
set
{
this.locationField = (value != null) ? value : -1;
}
}
/// <remarks/>
public ReservationType Type
{
get
{
return this.typeField;
}
set
{
this.typeField = value;
}
}
/// <remarks/>
public string Customer
{
get
{
return this.customerField;
}
set
{
this.customerField = value;
}
}
/// <remarks/>
public string CustTransactionID
{
get
{
return this.custTransactionIDField != null ? custTransactionIDField : string.Empty;
}
set
{
this.custTransactionIDField = value;
}
}
/// <remarks/>
public Guid SBRTransactionID
{
get
{
return this.sbrTransactionIDField;
}
set
{
this.sbrTransactionIDField = value;
}
}
/// <remarks/>
public string License
{
get
{
return this.licenseField;
}
set
{
this.licenseField = value;
}
}
/// <remarks/>
public string DlState
{
get
{
return this.dlStateField;
}
set
{
this.dlStateField = value;
}
}
/// <remarks/>
public string JobNbr
{
get
{
return this.jobNbrField;
}
set
{
this.jobNbrField = value;
}
}
/// <remarks/>
public bool Delivery
{
get
{
return this.deliveryField;
}
set
{
this.deliveryField = value;
}
}
public bool Pickup
{
get
{
return this.pickupField;
}
set
{
this.pickupField = value;
}
}
/// <remarks/>
public string DeliveryInstructions
{
get
{
return this.deliveryInstructionsField;
}
set
{
this.deliveryInstructionsField = value;
}
}
/// <remarks/>
public System.DateTime StartDate
{
get
{
return this.startDateField;
}
set
{
this.startDateField = value;
}
}
public string StartTime { get; set; }
public string EndTime { get; set; }
/// <remarks/>
public System.DateTime EndDate
{
get
{
return this.endDateField;
}
set
{
this.endDateField = value;
}
}
/// <remarks/>
public string CustomerPO
{
get
{
return this.customerPOField;
}
set
{
this.customerPOField = value;
}
}
/// <remarks/>
public string WebUser
{
get
{
return this.webUserField;
}
set
{
this.webUserField = value;
}
}
/// <remarks/>
public bool RPPFlag
{
get
{
return this.rPPFlagField;
}
set
{
this.rPPFlagField = value;
}
}
/// <remarks/>
public bool FuelFlag
{
get
{
return this.fuelFlagField;
}
set
{
this.fuelFlagField = value;
}
}
/// <remarks/>
public decimal DeliveryCharge
{
get
{
return this.deliveryChargeField;
}
set
{
this.deliveryChargeField = value;
}
}
/// <remarks/>
public decimal PickupCharge
{
get
{
return this.pickupChargeField;
}
set
{
this.pickupChargeField = value;
}
}
[System.Xml.Serialization.XmlArrayItemAttribute("EquipmentItems", IsNullable = false)]
[JsonProperty(PropertyName = "EquipmentItems")]
public List<EquipmentItem> Items
{
get
{
return this.itemsField;
}
set
{
this.itemsField = value;
}
}
/// <remarks/>
public CustomerDataList CustomerData
{
get
{
return this.customerDataField;
}
set
{
this.customerDataField = value;
}
}
List<IItemData> IReservation.Items
{
get
{
return this.itemsField.ToList<IItemData>();
}
set
{
SetItems(value);
}
}
/// <remarks/>
#endregion
private void SetItems(List<IItemData> items)
{
this.itemsField = ((List<EquipmentItem>)((IEnumerable<EquipmentItem>)items.Select(e => e.CatID == e.CatID)));
}
}
#endregion
[JsonObject]
public partial class EquipmentItem : IItemData
{
#region Private fields
private string equipmentIDField;
private string catIDField;
private string classIDField;
private string lineSequenceField;
private string quantityField;
private string toolFlexField;
private string hourlyRateField;
private string dailyRateField;
private string weeklyRateField;
private string monthlyRateField;
private string minRateField;
private bool daysOverField;
private bool weeksOverField;
private bool monthsOverField;
#endregion
#region Public properties
/// <remarks/>
public string Equipment
{
get
{
return this.equipmentIDField;
}
set
{
this.equipmentIDField = value;
}
}
/// <remarks/>
public string CatID
{
get
{
return this.catIDField;
}
set
{
this.catIDField = value;
}
}
/// <remarks/>
public string ClassID
{
get
{
return this.classIDField;
}
set
{
this.classIDField = value;
}
}
/// <remarks/>
public string LineSeq
{
get
{
return this.lineSequenceField;
}
set
{
this.lineSequenceField = value;
}
}
/// <remarks/>
public string Quantity
{
get
{
return this.quantityField;
}
set
{
this.quantityField = value;
}
}
/// <remarks/>
public string ToolFlex
{
get
{
return this.toolFlexField;
}
set
{
this.toolFlexField = value;
}
}
/// <remarks/>
public string HrRate
{
get
{
return this.hourlyRateField;
}
set
{
this.hourlyRateField = value;
}
}
/// <remarks/>
public string DayRate
{
get
{
return this.dailyRateField;
}
set
{
this.dailyRateField = value;
}
}
/// <remarks/>
public string WkRate
{
get
{
return this.weeklyRateField;
}
set
{
this.weeklyRateField = value;
}
}
public string MinRate
{
get
{
return this.minRateField;
}
set
{
this.minRateField = value;
}
}
/// <remarks/>
public string MoRate
{
get
{
return this.monthlyRateField;
}
set
{
this.monthlyRateField = value;
}
}
/// <remarks/>
public bool DayOver
{
get
{
return this.daysOverField;
}
set
{
this.daysOverField = value;
}
}
/// <remarks/>
public bool WkOver
{
get
{
return this.weeksOverField;
}
set
{
this.weeksOverField = value;
}
}
/// <remarks/>
public bool MoOver
{
get
{
return this.monthsOverField;
}
set
{
this.monthsOverField = value;
}
}
#endregion
}
好的帮派。我遇到了一个似乎非常流行但非常未解决(至少对我而言)的问题。我在 Fiddler 中有以下请求 body:
{
"Type": "WQ",
"Customer": "1600",
"JobNbr": "1zAlpha - BLAHDYBLOO",
"Delivery": 1,
"Pickup": 1,
"DelInst": "Location: Earth
",
"StartDate": "2017-02-28",
"StartTime": "1700",
"EndDate": "2017-03-15",
"EndTime": "1700",
"CustTransactionId": "555",
"EquipmentItems": {
"EquipmentItem":
[
{
"Equipment": "0500006",
"CatID": "050",
"ClassID": "0006",
"LineSeq": "1",
"Quantity": "001"
},
{
"Equipment": "0500007",
"CatID": "050",
"ClassID": "0007",
"LineSeq": "2",
"Quantity": "001"
}
]},
"CustomerFields": {
"blah": "12345",
"blah blah": "123",
"blah blah blah": "WHATEVER"
}
}
如您所见,我有一个复杂的 "Reservation" object,其中包含一个 "Equipment" object 的嵌套数组以及一个复杂的键值列表客户可能发送给我们的对,我们称之为 CustomerFields。
当我通过 fiddler 将其发送到控制器的操作时,parent class 按预期出现,但嵌套的设备数组和 CustomerFields object 为空。
我的 headers 看起来像这样:
Content-Type: application/json; charset=utf-8
Accept: application/json, text/javascript, /; q=0.01
Host: localhost:51493
Content-Length: 1209
我的动作签名如下:
Post([FromBody]Reservation reservation)
并且每个 class 分别用 [JsonObjec] 或 [Json属性] 装饰,我尝试删除 Json "names" 来自 json body。我需要做什么才能从 fiddler 获取我的控制器中完全填充的 object?我需要做 json 数据调整吗?代码调整?两个都?我完全不知所措。我已经尝试了很多不同的排列,在这一点上列出它们会适得其反。
提前感谢您的帮助。
预订Class定义:
[JsonObject]
public partial class Reservation : IReservation
{
#region private fields
private string companyField;
private int? locationField;
private ReservationType typeField;
private string customerField;
private string custTransactionIDField;
private Guid sbrTransactionIDField;
private string licenseField;
private string dlStateField;
private string jobNbrField;
private bool deliveryField;
private bool pickupField;
private string deliveryInstructionsField;
private DateTime startDateField;
private DateTime endDateField;
private string customerPOField;
private string webUserField;
private bool rPPFlagField;
private bool fuelFlagField;
private decimal deliveryChargeField;
private decimal pickupChargeField;
private CustomerDataList customerDataField;
private EquipmentItems itemsField;
#endregion
#region Public properties
/// <remarks/>
public int? ReservationNo { get; set; }
/// <remarks/>
public string Company
{
get
{
return this.companyField;
}
set
{
this.companyField = value;
}
}
/// <remarks/>
public int? Location
{
get
{
return this.locationField;
}
set
{
this.locationField = (value != null) ? value : -1;
}
}
/// <remarks/>
public ReservationType Type
{
get
{
return this.typeField;
}
set
{
this.typeField = value;
}
}
/// <remarks/>
public string Customer
{
get
{
return this.customerField;
}
set
{
this.customerField = value;
}
}
/// <remarks/>
public string CustTransactionID
{
get
{
return this.custTransactionIDField != null ? custTransactionIDField : string.Empty;
}
set
{
this.custTransactionIDField = value;
}
}
/// <remarks/>
public Guid SBRTransactionID
{
get
{
return this.sbrTransactionIDField;
}
set
{
this.sbrTransactionIDField = value;
}
}
/// <remarks/>
public string License
{
get
{
return this.licenseField;
}
set
{
this.licenseField = value;
}
}
/// <remarks/>
public string DlState
{
get
{
return this.dlStateField;
}
set
{
this.dlStateField = value;
}
}
/// <remarks/>
public string JobNbr
{
get
{
return this.jobNbrField;
}
set
{
this.jobNbrField = value;
}
}
/// <remarks/>
public bool Delivery
{
get
{
return this.deliveryField;
}
set
{
this.deliveryField = value;
}
}
public bool Pickup
{
get
{
return this.pickupField;
}
set
{
this.pickupField = value;
}
}
/// <remarks/>
public string DeliveryInstructions
{
get
{
return this.deliveryInstructionsField;
}
set
{
this.deliveryInstructionsField = value;
}
}
/// <remarks/>
public System.DateTime StartDate
{
get
{
return this.startDateField;
}
set
{
this.startDateField = value;
}
}
public string StartTime { get; set; }
public string EndTime { get; set; }
/// <remarks/>
public System.DateTime EndDate
{
get
{
return this.endDateField;
}
set
{
this.endDateField = value;
}
}
/// <remarks/>
public string CustomerPO
{
get
{
return this.customerPOField;
}
set
{
this.customerPOField = value;
}
}
/// <remarks/>
public string WebUser
{
get
{
return this.webUserField;
}
set
{
this.webUserField = value;
}
}
/// <remarks/>
public bool RPPFlag
{
get
{
return this.rPPFlagField;
}
set
{
this.rPPFlagField = value;
}
}
/// <remarks/>
public bool FuelFlag
{
get
{
return this.fuelFlagField;
}
set
{
this.fuelFlagField = value;
}
}
/// <remarks/>
public decimal DeliveryCharge
{
get
{
return this.deliveryChargeField;
}
set
{
this.deliveryChargeField = value;
}
}
/// <remarks/>
public decimal PickupCharge
{
get
{
return this.pickupChargeField;
}
set
{
this.pickupChargeField = value;
}
}
[System.Xml.Serialization.XmlArrayItemAttribute("EquipmentItems", IsNullable = false)]
[JsonProperty]
public EquipmentItems Items
{
get
{
return this.itemsField;
}
set
{
this.itemsField = value;
}
}
/// <remarks/>
public CustomerDataList CustomerData
{
get
{
return this.customerDataField;
}
set
{
this.customerDataField = value;
}
}
List<IItemData> IReservation.Items
{
get
{
return this.itemsField.ToList<IItemData>();
}
set
{
SetItems(value);
}
}
/// <remarks/>
#endregion
private void SetItems(List<IItemData> items)
{
this.itemsField = ((EquipmentItems)((IEnumerable<EquipmentItem>)items.Select(e => e.CatID == e.CatID)));
}
}
#endregion
装备物品定义:
[JsonObject]
public partial class EquipmentItems : List<EquipmentItem>
{ }
[JsonObject]
public partial class EquipmentItem : IItemData
{
#region Private fields
private string equipmentIDField;
private string catIDField;
private string classIDField;
private string lineSequenceField;
private string quantityField;
private string toolFlexField;
private string hourlyRateField;
private string dailyRateField;
private string weeklyRateField;
private string monthlyRateField;
private string minRateField;
private bool daysOverField;
private bool weeksOverField;
private bool monthsOverField;
#endregion
#region Public properties
/// <remarks/>
public string Equipment
{
get
{
return this.equipmentIDField;
}
set
{
this.equipmentIDField = value;
}
}
/// <remarks/>
public string CatID
{
get
{
return this.catIDField;
}
set
{
this.catIDField = value;
}
}
/// <remarks/>
public string ClassID
{
get
{
return this.classIDField;
}
set
{
this.classIDField = value;
}
}
/// <remarks/>
public string LineSeq
{
get
{
return this.lineSequenceField;
}
set
{
this.lineSequenceField = value;
}
}
/// <remarks/>
public string Quantity
{
get
{
return this.quantityField;
}
set
{
this.quantityField = value;
}
}
/// <remarks/>
public string ToolFlex
{
get
{
return this.toolFlexField;
}
set
{
this.toolFlexField = value;
}
}
/// <remarks/>
public string HrRate
{
get
{
return this.hourlyRateField;
}
set
{
this.hourlyRateField = value;
}
}
/// <remarks/>
public string DayRate
{
get
{
return this.dailyRateField;
}
set
{
this.dailyRateField = value;
}
}
/// <remarks/>
public string WkRate
{
get
{
return this.weeklyRateField;
}
set
{
this.weeklyRateField = value;
}
}
public string MinRate
{
get
{
return this.minRateField;
}
set
{
this.minRateField = value;
}
}
/// <remarks/>
public string MoRate
{
get
{
return this.monthlyRateField;
}
set
{
this.monthlyRateField = value;
}
}
/// <remarks/>
public bool DayOver
{
get
{
return this.daysOverField;
}
set
{
this.daysOverField = value;
}
}
/// <remarks/>
public bool WkOver
{
get
{
return this.weeksOverField;
}
set
{
this.weeksOverField = value;
}
}
/// <remarks/>
public bool MoOver
{
get
{
return this.monthsOverField;
}
set
{
this.monthsOverField = value;
}
}
#endregion
}
json 和 class defs 之间存在增量的可能性几乎为 0%,因为我对两者都使用了自动化工具。但如果你能帮我弄清楚 EquipmentItems 数组,那就足够了。再次感谢。
如果您期望 class 结构,我认为您的 json 不太正确。我已经删除了 EquipmentItem 下的数组并将 EquipmentItems 更改为一个数组:
{
"Type": "WQ",
"Customer": "1600",
"JobNbr": "1zAlpha - BLAHDYBLOO",
"Delivery": 1,
"Pickup": 1,
"DelInst": "Location: Earth
",
"StartDate": "2017-02-28",
"StartTime": "1700",
"EndDate": "2017-03-15",
"EndTime": "1700",
"CustTransactionId": "555",
"EquipmentItems": [{
"Equipment": "0500006",
"CatID": "050",
"ClassID": "0006",
"LineSeq": "1",
"Quantity": "001"
}, {
"Equipment": "0500007",
"CatID": "050",
"ClassID": "0007",
"LineSeq": "2",
"Quantity": "001"
}
],
"CustomerFields": {
"blah": "12345",
"blah blah": "123",
"blah blah blah": "WHATEVER"
}
}
[JsonObject]
public partial class Reservation : IReservation
{
#region private fields
private string companyField;
private int? locationField;
private ReservationType typeField;
private string customerField;
private string custTransactionIDField;
private Guid sbrTransactionIDField;
private string licenseField;
private string dlStateField;
private string jobNbrField;
private bool deliveryField;
private bool pickupField;
private string deliveryInstructionsField;
private DateTime startDateField;
private DateTime endDateField;
private string customerPOField;
private string webUserField;
private bool rPPFlagField;
private bool fuelFlagField;
private decimal deliveryChargeField;
private decimal pickupChargeField;
private CustomerDataList customerDataField;
private List<EquipmentItem> itemsField;
#endregion
#region Public properties
/// <remarks/>
public int? ReservationNo { get; set; }
/// <remarks/>
public string Company
{
get
{
return this.companyField;
}
set
{
this.companyField = value;
}
}
/// <remarks/>
public int? Location
{
get
{
return this.locationField;
}
set
{
this.locationField = (value != null) ? value : -1;
}
}
/// <remarks/>
public ReservationType Type
{
get
{
return this.typeField;
}
set
{
this.typeField = value;
}
}
/// <remarks/>
public string Customer
{
get
{
return this.customerField;
}
set
{
this.customerField = value;
}
}
/// <remarks/>
public string CustTransactionID
{
get
{
return this.custTransactionIDField != null ? custTransactionIDField : string.Empty;
}
set
{
this.custTransactionIDField = value;
}
}
/// <remarks/>
public Guid SBRTransactionID
{
get
{
return this.sbrTransactionIDField;
}
set
{
this.sbrTransactionIDField = value;
}
}
/// <remarks/>
public string License
{
get
{
return this.licenseField;
}
set
{
this.licenseField = value;
}
}
/// <remarks/>
public string DlState
{
get
{
return this.dlStateField;
}
set
{
this.dlStateField = value;
}
}
/// <remarks/>
public string JobNbr
{
get
{
return this.jobNbrField;
}
set
{
this.jobNbrField = value;
}
}
/// <remarks/>
public bool Delivery
{
get
{
return this.deliveryField;
}
set
{
this.deliveryField = value;
}
}
public bool Pickup
{
get
{
return this.pickupField;
}
set
{
this.pickupField = value;
}
}
/// <remarks/>
public string DeliveryInstructions
{
get
{
return this.deliveryInstructionsField;
}
set
{
this.deliveryInstructionsField = value;
}
}
/// <remarks/>
public System.DateTime StartDate
{
get
{
return this.startDateField;
}
set
{
this.startDateField = value;
}
}
public string StartTime { get; set; }
public string EndTime { get; set; }
/// <remarks/>
public System.DateTime EndDate
{
get
{
return this.endDateField;
}
set
{
this.endDateField = value;
}
}
/// <remarks/>
public string CustomerPO
{
get
{
return this.customerPOField;
}
set
{
this.customerPOField = value;
}
}
/// <remarks/>
public string WebUser
{
get
{
return this.webUserField;
}
set
{
this.webUserField = value;
}
}
/// <remarks/>
public bool RPPFlag
{
get
{
return this.rPPFlagField;
}
set
{
this.rPPFlagField = value;
}
}
/// <remarks/>
public bool FuelFlag
{
get
{
return this.fuelFlagField;
}
set
{
this.fuelFlagField = value;
}
}
/// <remarks/>
public decimal DeliveryCharge
{
get
{
return this.deliveryChargeField;
}
set
{
this.deliveryChargeField = value;
}
}
/// <remarks/>
public decimal PickupCharge
{
get
{
return this.pickupChargeField;
}
set
{
this.pickupChargeField = value;
}
}
[System.Xml.Serialization.XmlArrayItemAttribute("EquipmentItems", IsNullable = false)]
[JsonProperty(PropertyName = "EquipmentItems")]
public List<EquipmentItem> Items
{
get
{
return this.itemsField;
}
set
{
this.itemsField = value;
}
}
/// <remarks/>
public CustomerDataList CustomerData
{
get
{
return this.customerDataField;
}
set
{
this.customerDataField = value;
}
}
List<IItemData> IReservation.Items
{
get
{
return this.itemsField.ToList<IItemData>();
}
set
{
SetItems(value);
}
}
/// <remarks/>
#endregion
private void SetItems(List<IItemData> items)
{
this.itemsField = ((List<EquipmentItem>)((IEnumerable<EquipmentItem>)items.Select(e => e.CatID == e.CatID)));
}
}
#endregion
[JsonObject]
public partial class EquipmentItem : IItemData
{
#region Private fields
private string equipmentIDField;
private string catIDField;
private string classIDField;
private string lineSequenceField;
private string quantityField;
private string toolFlexField;
private string hourlyRateField;
private string dailyRateField;
private string weeklyRateField;
private string monthlyRateField;
private string minRateField;
private bool daysOverField;
private bool weeksOverField;
private bool monthsOverField;
#endregion
#region Public properties
/// <remarks/>
public string Equipment
{
get
{
return this.equipmentIDField;
}
set
{
this.equipmentIDField = value;
}
}
/// <remarks/>
public string CatID
{
get
{
return this.catIDField;
}
set
{
this.catIDField = value;
}
}
/// <remarks/>
public string ClassID
{
get
{
return this.classIDField;
}
set
{
this.classIDField = value;
}
}
/// <remarks/>
public string LineSeq
{
get
{
return this.lineSequenceField;
}
set
{
this.lineSequenceField = value;
}
}
/// <remarks/>
public string Quantity
{
get
{
return this.quantityField;
}
set
{
this.quantityField = value;
}
}
/// <remarks/>
public string ToolFlex
{
get
{
return this.toolFlexField;
}
set
{
this.toolFlexField = value;
}
}
/// <remarks/>
public string HrRate
{
get
{
return this.hourlyRateField;
}
set
{
this.hourlyRateField = value;
}
}
/// <remarks/>
public string DayRate
{
get
{
return this.dailyRateField;
}
set
{
this.dailyRateField = value;
}
}
/// <remarks/>
public string WkRate
{
get
{
return this.weeklyRateField;
}
set
{
this.weeklyRateField = value;
}
}
public string MinRate
{
get
{
return this.minRateField;
}
set
{
this.minRateField = value;
}
}
/// <remarks/>
public string MoRate
{
get
{
return this.monthlyRateField;
}
set
{
this.monthlyRateField = value;
}
}
/// <remarks/>
public bool DayOver
{
get
{
return this.daysOverField;
}
set
{
this.daysOverField = value;
}
}
/// <remarks/>
public bool WkOver
{
get
{
return this.weeksOverField;
}
set
{
this.weeksOverField = value;
}
}
/// <remarks/>
public bool MoOver
{
get
{
return this.monthsOverField;
}
set
{
this.monthsOverField = value;
}
}
#endregion
}