gpt4 book ai didi

c# - 反序列化 Json 以列出 C#

转载 作者:太空宇宙 更新时间:2023-11-03 21:11:02 25 4
gpt4 key购买 nike

我在反序列化 api 返回的 Json 时遇到了一些问题。

Json 如下:

{ "Result":[
{
"Id": 1,
"Type": "Type1"
},
{
"Id": 2,
"Type": "Type2"
}
]}

我正在尝试将其反序列化为这种类型的列表:

public class ContactType
{
public int Id { get; set; }
public string Type { get; set; }
}

下面使用的 ReturnType 是:List 函数 GetContactTypes 是这样调用的:

var test = await _items.GetContactTypes<List<ContactType>>(AuthToken.access_token);

使用这段代码:

    public async Task<ReturnType> GetContactTypes<ReturnType>(string access_token)
{
try
{
Header = string.Format("Bearer {0}", access_token);
client.DefaultRequestHeaders.Add("Authorization", Header);

HttpResponseMessage response = await client.GetAsync(base_url + "contacttypes");

if (response.StatusCode == HttpStatusCode.OK)
{
return JsonConvert.DeserializeObject<ReturnType>(await response.Content.ReadAsStringAsync());
}
else
{
return default(ReturnType);
}
}
catch (Exception ex)
{
return default(ReturnType);
}
}

但我总是得到这个错误:

无法将当前 JSON 对象(例如 {"name":"value"})反序列化为类型“System.Collections.Generic.List`1”,因为该类型需要一个 JSON 数组(例如 [1,2 ,3]) 正确反序列化。

感谢任何帮助,谢谢。

最佳答案

您尝试反序列化的对象有一个属性 Result,其中包含 ContactType 数组 - 您的对象模型中没有该属性。尝试反序列化到这个对象:

public class MyClass // give this a more meaningful name
{
public List<ContactType> Result{ get; set; }
}

public class ContactType
{
public int Id { get; set; }
public string Type { get; set; }
}

然后:

...
var test = await _items.GetContactTypes<MyObject>(AuthToken.access_token);
...

关于c# - 反序列化 Json 以列出 C#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37612787/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com