Я действительно борюсь за десериализацию строки, закодированной в json-код PHP, в ASP.NET.
Я использую nusoap и CakePHP 1.3 на стороне PHP и mvc.net 4.0 на веб-сервисесторона и все работало хорошо.Однако я не мог понять, как передать сложный массив как один из параметров веб-сервиса, поэтому у меня была идея сериализовать его как json и передать простую строку.Пока все хорошо ...
Но я не могу на всю жизнь десериализовать строку json_encoded в ASP.NET [ну, я пытался, по крайней мере, последние два часа;)]
Вот что у меня есть:
PHP отправляет массив продуктов (идентификатор продукта в виде GUID - отправляется в виде строки, затем преобразуется на стороне веб-службы) и количество продуктов:
$args['products'] = json_encode($booking['Booking']['prs_products']);
Это нормально воспринимается веб-службой как следующая строка json (продукты):
[{"BookingProducts": {"id": "2884f556-67ed-4eb8-98ca-a99dc27a2665" , "количество": 2}}, { "BookingProducts": { "ID": "f57854ba-0a9b-400b-bea0-bafdcb179b01", "количество": 2}}, { "BookingProducts": {"id": "7ff81128-c33c-4e6c-a33c-3ca40ccfb5d0", "amount": 2}}]
Затем я пытаюсь заполнить список BookingProducts <>.Класс BookingProducts выглядит следующим образом:
public class BookingProducts
{
public String id { get; set; }
public int quantity { get; set; }
public BookingProducts()
{
}
public BookingProducts(string id, int quantity)
{
this.id = id;
this.quantity = quantity;
}
}
Я пробовал обе библиотеки [System.Web.Script.Serialization] [2] и Newtonsoft.Json следующим образом, но безуспешно:
List<BookingProducts> productsList = new List<BookingProducts>();
try
{
productsList = JsonConvert.DeserializeObject<List<BookingProducts>>((products));
}
catch (Newtonsoft.Json.JsonSerializationException)
{
productsList = new JavaScriptSerializer().Deserialize<List<BookingProducts>>(products);
}
В обоих случаях я получаю список пустых продуктов (или исключение сериализации).
Надеюсь, кто-то уже делал это раньше или может заметить очевидную ошибку!