Member 13252808 Ответов: 1

Невозможно преобразовать сложный json в объект класса C#


this is my json.
<pre>{"status":200,"status_messages":"Success ","SuspendDate":null,"SubTotal":100,"Freight":0.0,"Discount":0.0,"TotalAmount":100,"CustomerCode":-1,"TableName":"TableNo2","CreatedBy":"admin","TokenNumber":"Token Number 1","MySuspendDetail":[{"RowID":1,"ProductCode":1,"RetailPrice":10,"Quantity":10,"Total":100,"TaxId":1,"ProductTax":0,"ExtraSuggestion":null,"MyModifiers":[{"ProductCode":1,"ModifierID":1,"ModifierGroupID":1,"ModifierName":"Frees","Price":0,"Quantity":10},{"ProductCode":1,"ModifierID":1,"ModifierGroupID":1,"ModifierName":"Frees","Price":0,"Quantity":10}]},{"RowID":1,"ProductCode":1,"RetailPrice":10,"Quantity":10,"Total":100,"TaxId":1,"ProductTax":0,"ExtraSuggestion":null,"MyModifiers":[{"ProductCode":1,"ModifierID":1,"ModifierGroupID":1,"ModifierName":"Frees","Price":0,"Quantity":10},{"ProductCode":1,"ModifierID":1,"ModifierGroupID":1,"ModifierName":"Frees","Price":0,"Quantity":10}]}]}




и это классы c#
<pre> public class MySuspend
    {
        public long SuspendID { get; set; }
        public DateTime  SuspendDate { get; set; }
        public double  Subtotal { get; set; }
        public double Freight { get; set; }
        public double  Discount { get; set; }
        public double TotalAmount { get; set; }
        public int CustomerCode { get; set; }
        public string  TableName { get; set; }
        public string  CreatedBy { get; set; }
        public string  TokenNumber { get; set; }

    }
    public class MySuspendDetail
    {
        public long SuspendID { get; set; }
        public int RowID { get; set; }
        public long  ProductCode { get; set; }
        public double  ProductPrice { get; set; }
        public int Quantity { get; set; }
        public double Total { get; set; }
        public int TaxId { get; set; }
        public double  ProductTax { get; set; }
        public string  ExtraSuggestion { get; set; }
        List<MyModifiers> MD { get; set; }
    }
    public class MyModifiers
    {
        public long  ProductCode { get; set; }
        public int ModifierID { get; set; }
        public int ModifierGroupID { get; set; }
        public string ModifierName { get; set; }
        public double  Price { get; set; }
        public double Quantity { get; set; }
        
    }
    public class PlacingOrder
    { 
       public Collection<MySuspendDetail> SuspendDetailTable { get; set; }
        //public Collection<MyModifiers> ModifierTable { get; set; }

    }
    public class OrderPlace
    {
        public long  SuspendID { get; set; }
        public int CustomerID { get; set; }
        public string TableName { get; set; }
        public string CreatedBy { get; set; }
        public string TokenNumber { get; set; }
        public List<MySuspendDetail> data { get; set; }
    }

я хочу десериализовать json в эти классы
я попробовал десериализовать следующий код



Что я уже пробовал:

я попробовал следующий код для десериализации json
public bool Ordering()
       {
           try
           {
              string  st = "{'status':200,'status_messages':'Success ','SuspendDate':null,'SubTotal':100,'Freight':0.0,'Discount':0.0,'TotalAmount':100,'CustomerCode':-1,'TableName':'TableNo2','CreatedBy':'admin','TokenNumber':'Token Number 1','MySuspendDetail':[{'RowID':1,'ProductCode':1,'RetailPrice':10,'Quantity':10,'Total':100,'TaxId':1,'ProductTax':0,'ExtraSuggestion':null,'MyModifiers':[{'ProductCode':1,'ModifierID':1,'ModifierGroupID':1,'ModifierName':'Frees','Price':0,'Quantity':10},{'ProductCode':1,'ModifierID':1,'ModifierGroupID':1,'ModifierName':'Frees','Price':0,'Quantity':10}]},{'RowID':1,'ProductCode':1,'RetailPrice':10,'Quantity':10,'Total':100,'TaxId':1,'ProductTax':0,'ExtraSuggestion':null,'MyModifiers':[{'ProductCode':1,'ModifierID':1,'ModifierGroupID':1,'ModifierName':'Frees','Price':0,'Quantity':10},{'ProductCode':1,'ModifierID':1,'ModifierGroupID':1,'ModifierName':'Frees','Price':0,'Quantity':10}]}]}";
               JavaScriptSerializer js = new JavaScriptSerializer();
               OrderPlace OR = js.Deserialize<OrderPlace>(st);


               //MySuspend sp = new MySuspend ();
               //sp.SuspendID=OR.


               //
               MySuspend ms = new MySuspend();
               ms.SuspendID = GetMaxSuspendID();
               ms.SuspendDate =System.DateTime. Now;
               ms.Subtotal = 0.0;
               ms.CreatedBy = OR.CreatedBy;
               ms.CustomerCode = OR.CustomerID;
               List<MySuspendDetail> datasubitems =OR.data  ;


               return true;
           }
           catch(Exception e)
           {
               return false;
           }
       }

но вам нуль в
datasubitems 
.

OriginalGriff

Где находится класс OrderPlace? Вы не показываете его определение, и поскольку это то, во что вы ДЕСЕРИАЛИЗУЕТЕ JSON, так что это, вероятно, очень важно.

Используйте виджет "улучшить вопрос", чтобы отредактировать свой вопрос и предоставить более подробную информацию.

Member 13252808

пожалуйста, проверьте сейчас

1 Ответов

Рейтинг:
1

OriginalGriff

Ваши данные не содержат свойства "данные".
Изменить это:

public List<MySuspendDetail> data { get; set; }
До настоящего времени:
public List<MySuspendDetail> MySuspendDetail { get; set; }

А это:
List<MySuspendDetail> datasubitems =OR.data
До настоящего времени:
List<MySuspendDetail> datasubitems = OR.MySuspendDetail
И datasubitems больше не будет null


Member 13252808

я запутался, не могли бы вы, пожалуйста, крелифицировать то, где я размещаю публичный список<mysuspenddetail> data { get; set; }
а где public List<mysuspenddetail> MySuspendDetail { get; set; }

Member 13252808

сделано. большое тебе спасибо дорогая,

OriginalGriff

Всегда пожалуйста!

Кстати: не используйте слово "дорогой" в интернете. Я знаю, что это распространено в Индии, но в некоторых частях западного мира это рассматривается как "покровительственный сексизм", когда используется для женщин. Поскольку вы понятия не имеете, с кем (или какого пола) вы разговариваете, лучше вообще оставить это в интернете. Со мной это не проблема, но лучше избегать случайных оскорблений.