【问题标题】:RestSharp: Unable to deserialize arrayRestSharp:无法反序列化数组
【发布时间】:2019-03-05 00:51:31
【问题描述】:

我正在使用 RestSharp。我有以下代码:

public void MyMethod()
{
       var client = new RestClient("https://test_site/api");
       var request = new RestRequest("/endpoint", Method.GET);

       var response = client.Execute<List<MyMapClass>>(request);
}

我的问题是,在我看到的所有示例中,JSON 的格式为“property”:“value”。

但是,就我而言,我只有一个字符串数组:

[
  "Str1",
  "Str2",
  "Str3"
]

所以我知道当 JSON 格式为 "property":"value" 时如何反序列化对象,但我的问题是:如何反序列化字符串数组?

【问题讨论】:

  • 只是将其反序列化为某种字符串集合(例如字符串数组)?
  • [ "Str1", "Str2", "Str3" ]MyMapClass 有什么关系?

标签: c# deserialization restsharp


【解决方案1】:

注意方括号而不是大括号。花括号代表一个对象,方括号代表一个数组。

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

或者

var response = client.Execute<string[]>(request);

你也可以在一个对象中有一个数组(见颜色)

{
    "name": "iPhone 7 Plus",
    "manufacturer": "Apple",
    "deviceType": "smartphone_tablet",
    "searchKey": "apple_iphone_7_plus",
    "colors": ["red", "blue"]
}

相应的模型如下所示:

public class MyMapClass 
{
    public string Name { get; set; }
    public string Manufacturer { get; set; }
    public string DeviceType { get; set; }
    public string SearchKey { get; set; }
    public List<string> Colors { get; set; }
}

【讨论】:

  • 这与 OP 的要求有何关系?
  • OP 似乎对 JSON 中的数组和对象之间的差异感到困惑。这是试图澄清差异。随意添加更好的答案。
  • 我无法提供答案,因为在我看来,他们在询问如何将[ "Str1", "Str2", "Str3" ] 反序列化为MyMapClass。这对我来说没有意义。
  • @Enigmativity 我读它的方式(我认为 Shane 是如何读它的)是 OP 知道如何反序列化一个对象(“我见过的所有例子,JSON 在形式“property”:“value”“)但不知道如何构造一个模型来反序列化字符串数组(“但是,在我的例子中我只有一个数组可变大小的值:").
  • @John - 是的,我也是这么读的。他们的具体问题是“那么,在这种情况下,应该如何定义 MyMapClass 类?”这就是为什么我认为我们必须知道[ "Str1", "Str2", "Str3" ] 如何映射到MyMapClass 才能提供答案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多