这是我的问题:
我正在尝试将json反序列化,这是我没有完成的。 json的格式如下:
{"responseId":1200,
"availableHotels":[
{"processId":"HA-84665605","hotelCode":"UKKTLT","availabilityStatus":"InstantConfirmation",...},
{"processId":"HA-28600965","hotelCode":"UKKTLT","availabilityStatus":"InstantConfirmation",...},
{"processId":"HI-63991185","hotelCode":"UKJOVF","availabilityStatus":"InstantConfirmation",...}
],
"totalFound":9,
"searchId":"TP-84026455"}
以下课程:
因此,我知道通过查看json可以看出它包含getAvailableHotelResponse对象的信息。
所以,我使用JsonConvert
和JavaScriptSerializer
尝试了以下内容:
JavaScriptSerializer ser = new JavaScriptSerializer();
getAvailableHotelResponse availableResponse = ser.Deserialize<getAvailableHotelResponse>(json);
// Exception: "Type 'com.hotelspro.api.getAvailableHotelResponse' is not supported for deserialization of an array"
List<getAvailableHotelResponse> items = ser.Deserialize<List<getAvailableHotelResponse>>(json);
// items.Count = 0
List<getAvailableHotelResponse> result = JsonConvert.DeserializeObject<List<getAvailableHotelResponse>>(json);
// Exception: "Cannot deserialize JSON object into type 'System.Collections.Generic.List`1[com.hotelspro.api.getAvailableHotelResponse]'."
getAvailableHotelResponse result2 = JsonConvert.DeserializeObject<getAvailableHotelResponse>(json);
// Exception: Cannot deserialize JSON array into type 'com.hotelspro.api.hotelObj'.
为了反序列化这个对象,正确的句子是什么?
谢谢!
答案 0 :(得分:1)
根据您的描述很难解释对象的结构,但我能够使用以下最小代码反序列化您的示例JSON:
var result = JsonConvert.DeserializeObject<getAvailableHotelResponse>(json);
public class getAvailableHotelResponse
{
public int responseId;
public availableHotel[] availableHotels;
public int totalFound;
public string searchId;
}
public class availableHotel
{
public string processId;
public string hotelCode;
public string availabilityStatus;
}
答案 1 :(得分:0)
以上列出的对象都没有完全匹配JSON模式...您确定将对象序列化为JSON的人是否使用了您尝试反序列化的任何类?如果没有,只需创建一个将JSON反序列化为的类:
public class HotelSearchResponse
{
public int responseID {get;set;}
public hotel[] availableHotels {get;set;}
public int totalFound {get;set;}
public string searchId {get;set;}
}
如果hotel
数组不起作用,请尝试List<hotel>
代替availableHotels
类型。
P.S。与问题中列出的JSON最接近的对象是getAvailableHotelResponse
,但它将availableHotels
声明为单hotel
个实例,而JSON有一个返回hotel
个对象的数组