Как я могу получить значения из массива JSON в POST запрос в C# API-интерфейс
Привет, я пытаюсь получить значения адресов из простого запроса post в API, чтобы я мог прочитать их и заполнить таблицу SQL. Такие элементы, как имя и т.д., Я могу читать и записывать в базу данных, но у каждого человека есть 2 адреса, поэтому они находятся в json в виде массива (без квадратных скобок). Есть ли простой способ сделать это?
Что я уже пробовал:
Моя модель выглядит так
public class Customer { // Properties of Create Customer with Get/Set public int customer_number { get; set; } // mandatory public string prefix { get; set; } // not mandatory public string firstname { get; set; } // mandatory public string surname { get; set; } // mandatory public string type { get; set; } // mandatory -- address type "Billing | Shipping" public string line_1 { get; set; } // mandatory public string line_2 { get; set; } // not mandatory public string line_3 { get; set; } // not mandatory public string city { get; set; } // not mandatory public string county { get; set; } //not mandatory public string post_code { get; set; } //mandatory public string country { get; set; } // not mandatory public char email_opt_in { get; set; } // mandatory } public class CreateCustomer : Customer { }
и мой контроллер вот такой.
// POST api/<controller> public HttpResponseMessage Post([FromBody]CreateCustomer value) { _conCust = new SqlConnection(ConfigurationManager.ConnectionStrings["CAR_Connection"].ConnectionString); _conCust.Open(); var a_query = "insert into cust ( Title, FirstName, Surname, Address1, Address2, Address3, Town, County, Country, " + "PostCode, Tel, Mobile, ACCreateDate, CreatedBy, CreatedDate, CreatedMachine) values " + "(@Title, @First, @Surname, @Add1, @Add2, @Add3, @Town, @County, @Country, @PostCode, @Tel, @Mobile, CONVERT(VARCHAR(10), getdate(), 111), " + "'WebAPI', getdate(), 'AUTOMATED') "; SqlCommand a_insertcommand = new SqlCommand(a_query, _conCust); a_insertcommand.Parameters.AddWithValue("@Title", value.prefix); a_insertcommand.Parameters.AddWithValue("@First", value.firstname); a_insertcommand.Parameters.AddWithValue("@Surname", value.surname); a_insertcommand.Parameters.AddWithValue("@Add1", ""); //value.line_1); a_insertcommand.Parameters.AddWithValue("@Add2", ""); // value.line_2); a_insertcommand.Parameters.AddWithValue("@Add3", ""); // value.line_3); a_insertcommand.Parameters.AddWithValue("@Town", ""); // value.city); a_insertcommand.Parameters.AddWithValue("@County", ""); // value.county); a_insertcommand.Parameters.AddWithValue("@Country", ""); // value.country); a_insertcommand.Parameters.AddWithValue("@PostCode", value.post_code[1]); a_insertcommand.Parameters.AddWithValue("@Tel", ""); // value.phone_number); a_insertcommand.Parameters.AddWithValue("@Mobile", ""); // value.mobile_number); int a_result = a_insertcommand.ExecuteNonQuery();
На данный момент, чтобы проверить правильность сохранения имени, я закомментировал значения адресов, вставив вместо них только пустую строку.
Я знаю, что мне просто не хватает чего-то простого!
Почтовый запрос был бы похож на этот...
{ "customer_number": 1, "prefix": "Mr", "firstname": "Test", "surname": "User", "billing_address": { "type": "Billing", "line_1": "Street 1", "line_2": "Street 2", "line_3": "Street 3", "city": "AnyTown", "county": "Cumbria", "post_code": "CA1 4TY", "country": "GB", "is_default": "1" }, "shipping_address": { "type": "Shipping", "line_1": "Street 1", "line_2": "Street 2", "line_3": "Street 3", "city": "Town", "county": "Cumbria", "post_code": "CA1 4TY", "country": "GB", "is_default": "0" }, "email_opt_in": "0|1" }
Мы будем признательны за любые рекомендации.