2014-11-05 51 views
0

我將以下JSON發送給接受Stream作爲參數的WCF服務。JavaScriptSerializer.Deserialize提供空字段

{"ReservationStream": 
{"clientFirstName":"Abe", 
"clientLastName":"Lincoln", 
"clientPhone":"0544944860", 
"clientEmail":"[email protected]", 
"pickupLocationID":"3699", 
"pickupAddressString":"JFK Airport Terminal 1", 
"pickupFlightNumber":"LY001", 
"pickupAirline":"El Al", 
"pickupAirportName":"John F Kennedy Intl", 
} 
} 

在調試器中,流變量顯示所有預期值。我想反序列化到定義的類如下:

public class ReservationStream 
{ 
     public String clientFirstName { get; set; } 
     public String clientLastName { get; set; } 
     public String clientPhone { get; set; } 
     public String clientEmail { get; set; } 
     public String pickupLocationID { get; set; } 
     public String pickupAddressString { get; set; } 
     public String pickupFlightNumber { get; set; } 
     public String pickupAirline { get; set; } 
     public String pickupAirportName { get; set; } 
} 

當我打電話

JavaScriptSerializer javaScriptSerializer = new JavaScriptSerializer(); 
      ReservationStream structuredReservations = javaScriptSerializer.Deserialize<ReservationStream>(strJSON); 

不會拋出異常,但所有的字段具有空值。我的錯誤在哪裏?

+0

你可以顯示接收ajax調用 – 2014-11-05 08:19:51

+0

在asp.net中的數據會自動反序列化的方法的代碼需要調用javaScriptSerializer方法 – 2014-11-05 08:34:50

回答

1

我認爲這是因爲你的JSON對象嵌套在ReservationStream標記中。

嘗試用剛:

{ "clientFirstName":"Abe", "clientLastName":"Lincoln", "clientPhone":"0544944860", "clientEmail":"[email protected]", "pickupLocationID":"3699", "pickupAddressString":"JFK Airport Terminal 1", "pickupFlightNumber":"LY001", "pickupAirline":"El Al", "pickupAirportName":"John F Kennedy Intl" }

+0

我有他有相同的結構,它工作正常,但我沒有使用javaScriptSerializer – 2014-11-05 08:46:00

0

你試圖反序列化包含一個ReservationStream對象,而不是ReservationStream對象本身的對象。要解決這個問題

的一種方法是,使含有ReservationStream一個包裝類,並使用該反序列化:

public class WrapperClass 
{ 
    public ReservationStream ReservationStream { get; set; } 
} 

WrapperClass wrapperClass = serializer.Deserialize<WrapperClass>(strJSON); 
0

我曾經有同樣的問題,我刪除了javaScriptSerializer和直接使用類似的方法參數這

public static string UpdateTemplateProperties(TemplateProperties templateProperties) 
{ 
    var x = templateProperties.Something 
} 

和我有JavaScript對象結構,你

只是一定要具有相同的名稱爲PARAMET呃和你的JavaScript對象文字中的第一個對象名稱

相關問題