2017-07-11 99 views
0

我想反序列化JSON這樣:反序列化JSON和XML字符串列在C#

[{"BuyPrice":0,"Description":null,"Id":3,"ReceptionId":7,"RejectPart":" 
<Rejectedparameters>\u000d\u000a <OutsideState>0<\/OutsideState>\u000d\u000a 
<FastRPM>0<\/FastRPM>\u000d\u000a <IdleRPM>0<\/IdleRPM>\u000d\u000a 
<FastLambda>0<\/FastLambda>\u000d\u000a <FastCO>0<\/FastCO>\u000d\u000a 
<BackBrake>0<\/BackBrake>\u000d\u000a <HandBrake>0<\/HandBrake>\u000d\u000a 
<FrontBrake>0<\/FrontBrake>\u000d\u000a 
<BackLeftShockAbsorber>0<\/BackLeftShockAbsorber>\u000d\u000a 
<BackRightShockAbsorber>0<\/BackRightShockAbsorber>\u000d\u000a 
<FrontLeftShockAbsorber>0<\/FrontLeftShockAbsorber>\u000d\u000a 
<FrontRightShockAbsorber>0<\/FrontRightShockAbsorber>\u000d\u000a 
<HandBrakeAcceleration>0<\/HandBrakeAcceleration>\u000d\u000a 
<BrakeAcceleration>0<\/BrakeAcceleration>\u000d\u000a 
<BackSideSlip>0<\/BackSideSlip>\u000d\u000a <TotalWeight>0<\/TotalWeight> 
\u000d\u000a <BackWeight>0<\/BackWeight>\u000d\u000a 
<FrontWeight>0<\/FrontWeight>\u000d\u000a <Lambda>0<\/Lambda>\u000d\u000a 
<NOX>0<\/NOX>\u000d\u000a <CO2>0<\/CO2>\u000d 
\u000a<\/Rejectedparameters>","Result":"Reject","SellPrice":220000,"State":nu 
ll,"SubmitDatetime":"\/Date(1499677272213+0430)\/"}] 

,你可以看到我的專欄之一是XML格式。 我的代碼進行反序列化這個JSON:

string result = ClientRequest.DownloadString(ServiceHostName + "/ReceptionHistoryService.svc/ReceptionHistoryByReceptionId/" + id); 

var javascriptserializer = new JavaScriptSerializer(); 
return javascriptserializer.Deserialize<ReceptionHistory>(result); 

,但我得到這個錯誤:

An unhandled exception of type 'System.InvalidOperationException' occurred in System.Web.Extensions.dll 

Additional information: Type 'TRMStartPoint_NoCamera.DataContractModel.ReceptionHistory' is not supported for deserialization of an array. 

這裏是我receptionhistory類:

public class ReceptionHistory 
{ 
    public Int64 Id { set; get; } 
    public DateTime SubmitDatetime { set; get; } 
    public Int64 ReceptionId { set; get; } 
    public Int64 SellPrice { set; get; } 
    public Int64 BuyPrice { set; get; } 
    public string State { set; get; } 
    public string Description { set; get; } 
    public string RejectPart { set; get; } 
    public string Result { set; get; } 
} 
+0

你的JSON文件是一個數組,由方括號表示。將它反序列化爲集合 –

+0

@SirRufo我添加了我的接待歷史課。 –

回答

4

錯誤說,你的類型是不應該對數組進行反序列化。 嘗試反序列化List<T>,而不是ReceptionHistory,像這樣:

javascriptserializer.Deserialize<List<ReceptionHistory>>(result);