【问题标题】:RestSharp not deserializing a string (always null)RestSharp 不反序列化字符串(始终为空)
【发布时间】:2022-09-23 23:05:51
【问题描述】:

我目前尝试从 RestSharp PostAsync 调用中获取序列化响应,例如

var responseData = Client.PostAsync<Data>(request).Result;

现在,这是我收到的:

    {
    \"status\":1,
    \"success\":\"message transmitted\",
    \"available\":19215,
    \"message_ids\":\"26684730:56798\"
    }

这是“数据”类:

public class Data
{
    [JsonProperty(\"status\")]
    public int Status { get; set; }

    [JsonProperty(\"success\")]
    public string Success { get; set; }

    [JsonProperty(\"available\")]
    public int Available { get; set; }

    [JsonProperty(\"message_ids\")]
    public string MessageIds { get; set; }

    [JsonProperty(\"error\")]
    public string Error { get; set; }

}

我不知道为什么,但是属性 message_ids 始终为空!? 这可能是由字符串中的 : 引起的,而我的这是 RestSharp 中的错误?

这是“数据”的样子:

  • 为什么你会假设 C# 最广泛使用的 REST HTTP 客户端之一存在错误,而不怀疑你自己的代码?您是否认为您使用了错误的JsonProperty 属性?你如何“接收”JSON?谁在这里生成、发送和处理什么?我们在看什么?
  • 好吧,鉴于您在问题中提出的 Data 类,我敢打赌,您从后端/服务器获得的 json 响应实际上确实如此不是包含一个 \"message_ids\" json 属性,或者你在代码中对 Data 实例所做的一些 \"fancy\" 东西,这些东西对你观察到的结果负责。顺便说一句,我也接受死浣熊赢得这个赌注。显示某些 Data 实例内容的屏幕截图确实不是即使不考虑 \"MessageIds\" 也与呈现的 json 数据相关(注意 \"Available\" 中的差异)。

标签: c# json deserialization restsharp json-deserialization


【解决方案1】:

对于restsharp,您需要 JsonPropertyName 属性

[JsonPropertyName("message_ids")]
public string MessageIds { get; set; }

或者如果你想使用 JsonProperty 你将不得不使用 Newtonsoft.Json

var response = client.ExecuteAsync(request).Result;

//if you have async method better to use
var response = await client.ExecuteAsync(request);

Data  data = JsonConvert.DeserializeObject<Data>(response.Content);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-05-07
    • 2014-05-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-04
    相关资源
    最近更新 更多