使用Json和JavaScriptSerializer反序列化JSON结果
这是我的问题:
我正在尝试将我没有完成的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"}
以下课程:
- 具有以下属性的getAvailableHotelResponse:
- hotelObj可用的酒店
- int totalFound
- 字符串responseId
- 字符串searchId
- hotelObj w / property:
- 酒店
- 酒店带有物业:
- 的ProcessID
- hotelCode
- availabilityStatus
- …
因此,我知道通过查看json可以看出它包含getAvailableHotelResponse对象的信息。
所以,我使用JsonConvert
和JavaScriptSerializer
尝试了以下内容:
JavaScriptSerializer ser = new JavaScriptSerializer(); getAvailableHotelResponse availableResponse = ser.Deserialize(json); // Exception: "Type 'com.hotelspro.api.getAvailableHotelResponse' is not supported for deserialization of an array" List items = ser.Deserialize<List>(json); // items.Count = 0 List result = JsonConvert.DeserializeObject<List>(json); // Exception: "Cannot deserialize JSON object into type 'System.Collections.Generic.List`1[com.hotelspro.api.getAvailableHotelResponse]'." getAvailableHotelResponse result2 = JsonConvert.DeserializeObject(json); // Exception: Cannot deserialize JSON array into type 'com.hotelspro.api.hotelObj'.
为了反序列化这个对象,正确的句子是什么?
谢谢!
根据您的描述很难解释对象的结构,但我能够使用以下最小代码反序化您的示例JSON:
var result = JsonConvert.DeserializeObject(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; }
以上列出的对象都没有完全匹配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
arrays不起作用,请尝试使用List
代替availableHotels
类型。
PS与您问题中列出的JSON最接近的对象是getAvailableHotelResponse
但它将availableHotels
声明为单个hotel
实例,而JSON则返回了一系列hotel
对象。