【发布时间】:2011-02-22 21:32:12
【问题描述】:
在 ASP.NET 中反序列化 PHP json 编码字符串时我真的很苦恼。
我在 PHP 端使用 nusoap 和 CakePHP 1.3,在 Web 服务端使用 mvc.net 4.0,一切运行良好。但是,我不知道如何将复杂的数组作为 web 服务的一个参数传递,所以我想到了将其序列化为 json 并传递一个简单的字符串。到目前为止一切顺利...
但我终生无法在 ASP.NET 中反序列化 json_encoded 字符串 [好吧,我至少在过去两个小时内一直在尝试 ;)]
这是我目前所拥有的:
PHP 发送产品数组(产品 id 作为 GUID - 作为字符串发送,然后在 Web 服务端转换)和产品数量:
$args['products'] = json_encode($booking['Booking']['prs_products']);
Web 服务可以接收到以下 json 字符串(产品):
[{"BookingProducts":{"id":"2884f556-67ed-4eb8-98ca-a99dc27a2665","quantity":2}},{"BookingProducts":{"id":"f57854ba-0a9b-400b -bea0-bafdcb179b01","quantity":2}},{"BookingProducts":{"id":"7ff81128-c33c-4e6c-a33c-3ca40ccfb5d0","quantity":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);
}
在这两种情况下,我都会得到一个空产品列表(或序列化异常)。
希望有人以前这样做过,或者可以发现一个明显的错误!
【问题讨论】:
标签: asp.net asp.net-mvc .net-4.0 webservice-client nusoap