Your class structure needs to match the json structure otherwise the deserialiser doesn't know what properties to populate with what
[DataContract]
public class Order
{
[DataMember(EmitDefaultValue = false)]
public string orderMode { get; set; }
[DataMember]
public List<Item> nonFabricLineItemDetails { get; set; }
[DataMember]
public List<Item> fabricLineItemDetails { get; set; }
[DataMember(EmitDefaultValue = false)]
public string orderRefNo { get; set; }
[DataMember(EmitDefaultValue = false)]
public string courierId { get; set; }
[DataMember(EmitDefaultValue = false)]
public string customerID { get; set; }
}
[DataContract]
public class Item
{
[DataMember(EmitDefaultValue = false)]
public string itemID { get; set; }
[DataMember(EmitDefaultValue = false)]
public string quantity { get; set; }
}