繁体   English   中英

RestSharp将空字符串反序列化为字典错误

[英]RestSharp Deserialization of empty string to Dictionary Error

我对RestSharp有点陌生,所以请原谅我的无知。 我收到以下错误:

 {"Unable to cast object of type 'System.String' to type 'System.Collections.Generic.IDictionary`2[System.String,System.Object]'."}

当RestSharp尝试反序列化并将字符串清空到Dictionary对象时,会发生这种情况。

这是我的Result对象的缩写:

public class Result
{
     public Dictionary<string, string> assignment_group { get; set; }
}

如果填充了assignment_group,则返回以下内容:

"assignment_group":{"link":"https://someurl/api/now/table/sys_user_group/2c1cf1176f29f5007a3db03f5d3ee4aa","value":"2c1cf1176f29f5007a3db03f5d3ee4aa"}

如果未填充assignment_group,则返回以下内容:

"assignment_group":""

发生的情况是Assignment_group的JSON响应将是Dictionary或空字符串。 如果它是一个空字符串,我只会得到错误。 如何在Result类的Assignment_group属性中容纳两种返回类型?

在此先感谢您的帮助。

更新:这是我的有效解决方案。

我使用的是Newtonsoft.Json,而不是RestSharp使用的默认Deserializer。 这是我的包装器类的代码示例:

 public T Execute<T>(RestRequest request) where T : new()
 {
        if (request.Method == Method.POST)
            client.FollowRedirects = false;

        var response = client.Execute<T>(request);

        // **** Added Newtonsoft.Json ****
        var x = JsonConvert.DeserializeObject<T>(response.Content);


        LogRequest(request, client);
        LogResponse<T>(response);

        ErrorHandling<T>(response);

       //  ****This is no longer needed. Data is null now****
       // return response.Data;  

       //  **** Added **** 
       return x;
 }

您是否为此使用自定义的序列化器/解串器? 因为我的理解是涵盖了以下情况(但您的示例未涉及):

  1. assignment_group = null; 结果为“ assignment_group”:空
  2. assignment_group = new Dictionary(); 结果为“ assignment_group”:“ {}”
  3. assignment_group = new Dictionary(); assignment_group.Add( “键”, “值”); 结果为“ assignment_group”:“ {” key“:” value“}

这也可能与以下内容有关: https : //github.com/restsharp/RestSharp/issues/486

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM