2015-09-26 3 views
0

Я пытаюсь получить JSON объект из массива JSON в моем проекте веб-сервиса ... и я получаю эту ошибку:Newtonsoft JSON не содержит определение для «Пункт»

Newtonsoft JSON does not contain definition for 'Item' , 

Я также попытался использовать другие функции вместо функции «Item», но это не работает слишком

Кстати, я использовал VB в C# интерактивного инструмента конвертера генерировать этот код ...

это мой код

try 
     { 
      HttpContext context = this.Context; 
      string strJson = ""; 

      JArray OrderItems = JArray.Parse(JSONString); 
      //Dim IncrementalConnection As New SqlConnection() 
      SqlConnection conn = new SqlConnection(connectionString); 
      conn.Open(); 
      SqlCommand IncrementalIdCommand = new SqlCommand("INSERT INTO TheOrderIds DEFAULT VALUES; SET @AutoID=SCOPE_IDENTITY()", conn); 
      SqlParameter Param = new SqlParameter(); 
      Param.ParameterName = "@AutoID"; 
      Param.Size = 4; 
      Param.Direction = ParameterDirection.Output; 
      IncrementalIdCommand.Parameters.Add(Param); 
      IncrementalIdCommand.ExecuteNonQuery(); 
      int OrderId = Convert.ToInt32(Param.Value); 
      conn.Close(); 

      foreach (JObject OrderItem in OrderItems) 
      { 
       string strSQL = "insert into Orders(ProductNumber,Name,Category,Price,OrderId,TableNumber,WaiterName,CashierName,DateAndTime,isActive,isCoocked,isPaid,isYesCanceled,ProductQuantity,extraQty,PaidDate,isDiscounted, DicountPercent, AfterDiscount) values(@x,@y,@a,@b,@c,@d,@e,@f,@g,@h,@i,@j,@k,@l,0,getDate(),0,0,0)"; 
       conn.Open(); 
       SqlCommand cmd = new SqlCommand(strSQL, conn); 
       cmd.Parameters.AddWithValue("@x", OrderItem.Item("ProductNumber").ToString()); 
       cmd.Parameters.AddWithValue("@y", OrderItem.Item("Name").ToString()); 
       cmd.Parameters.AddWithValue("@a", OrderItem.Item("Category").ToString()); 
       cmd.Parameters.AddWithValue("@b", OrderItem.Item("Price").ToString()); 
       cmd.Parameters.AddWithValue("@c", OrderId); 
       cmd.Parameters.AddWithValue("@d", OrderItem.Item("TableNumber").ToString()); 
       cmd.Parameters.AddWithValue("@e", OrderItem.Item("WaiterName").ToString()); 
       cmd.Parameters.AddWithValue("@f", OrderItem.Item("CashierName").ToString()); 
       cmd.Parameters.AddWithValue("@g", OrderItem.Item("DateAndTime").ToString()); 
       cmd.Parameters.AddWithValue("@h", OrderItem.Item("isActive").ToString()); 
       cmd.Parameters.AddWithValue("@i", OrderItem.Item("isCoocked").ToString()); 
       cmd.Parameters.AddWithValue("@j", OrderItem.Item("isPaid").ToString()); 
       cmd.Parameters.AddWithValue("@k", OrderItem.Item("isYesCanceled").ToString()); 
       cmd.Parameters.AddWithValue("@l", OrderItem.Item("ProductQuantity").ToString()); 
       cmd.ExecuteNonQuery(); 
       conn.Close(); 
      } 
      //ProductNumber As [String], Name As [String], Category As [String], Price As [String], OrderId As [String]' 
      //this is the bridge to database\ 

      string json = "{\"result\":\"1\", \"exception\":" + "" + "\"" + "NULL" + "\"" + "\"}"; 
      context.Response.Write(strJson); 

     } 
     catch (Exception ex) 
     { 
      string json = "{\"result\":\"0\", \"exception\":" + "" + ex.Message + "\"}"; 
      Context.Response.Write(json); 

     } 

ответ

0

В C# один обращается к объекту indexer, просто добавив [] таким же образом, как и один из элементов доступа к list. JObject имеет индекс, который берет строку и возвращает значение свойства этого имени. Таким образом, вам нужно сделать:

  cmd.Parameters.AddWithValue("@x", OrderItem["ProductNumber"].ToString()); 

и аналогично для других звонков cmd.Parameters.AddWithValue().