【问题标题】:Deserialize json with xml string columns in c#在c#中使用xml字符串列反序列化json
【发布时间】:2017-07-11 06:00:15
【问题描述】:

我想反序列化这个json:

    [{"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.

这是我的接待历史课:

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; }
}

【问题讨论】:

  • 您的 JSON 文档是一个数组,由方括号表示。将其反序列化为集合
  • @SirRufo 我添加了我的接收历史类。

标签: c# json xml serialization


【解决方案1】:

错误表明您的类型不应该反序列化数组。 尝试反序列化List&lt;T&gt;,而不是ReceptionHistory,如下所示:

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

【讨论】:

    猜你喜欢
    • 2021-09-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多