簡體   English   中英

無法使用 RestSharp C# 反序列化 RestResponse

[英]Cannot deserialize RestResponse with RestSharp C#

我正在嘗試將 JSON 反序列化為 C# 對象,但無法擺脫此編譯器錯誤。 任何幫助將非常感激。

JSON

{
  AX:{BX:1777} 
}

這是我的反序列化器類:

響應.cs

{
    public class Response
    {
        public AX Ax { get; set; }
    }
}

AX.cs

{
    public class AX
    {
        public long Bx { get; set; }
    }
}

這是有問題的行:

IRestResponse<Response> response = client.Execute<Response>(request);

response.Content 一樣好,並返回原始 JSON,但我希望它是 Response 類的一個實例。 我想像這樣訪問 Bx:

var price = response.Ax.Bx; // should return 1777

但是這一行會產生以下編譯器錯誤:

Error: IRestResponse does not contain definition for 'Ax'

問題是區分大小寫的。 RestSharp 序列化程序需要以下 json 結構

{
  Ax:{Bx:1777} 
}

你有3種方法來處理它:

1) 將 DataContract 和 DataMember 添加到您的類中

[DataContract]
public class Response
{
    [DataMember(Name = "AX")]
    public AX Ax { get; set; }
}

[DataContract]
public class AX
{
    [DataMember(Name = "BX")]
    public long Bx { get; set; }
}

2)編寫您自己的忽略大小寫敏感的序列化程序並將其與restsharp一起使用

3)改變你的json結構

對於它的價值,並且花了一些時間搜索這個,我會使用 Newtonsoft.Json 並像這樣解決它:

IRestResponse response = client.Execute(request);
string ResponseStr = response.Content.ToString();
dynamic Response = JsonConvert.DeserializeObject<dynamic>(ResponseStr);

然后,您可以根據需要取消元素:

var price = Response.AX.BX;
string Description = Response.AX.Desc.ToString();     etc

希望這可以幫助某人

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM