【发布时间】:2021-01-14 05:59:53
【问题描述】:
我从 API 获得 JSON 结果
{"Data":[[{"Key":"Proudct","Value":"PC"},{"Key":"Address","Value":"USA"},{"Key":"Tel","Value":"123456777"}]]}
我的模型课:
public class MyData
{
public List<List<KeyValuePair<string, string>>> Data {get; set;}
//public List<List<Dictionary<string, string>>> Data {get; set;}
}
我的功能
public async Task<MyData> GetDataAsync()
{
var response = await _httpClient.GetAsync("apiURL");
if (response.StatusCode == HttpStatusCode.OK)
{
string result = await response.Content.ReadAsStringAsync();
var data = JsonConvert.DeserializeObject<MyData>(result);
return data
}
return new MyData();
}
除非我将 KeyValuePair 更改为 Dictionary 类型,否则结果始终为 null。我不能使用字典,因为“键”有时不会是唯一的,我不知道为什么 List 不能按预期工作!!
提前致谢
【问题讨论】:
-
您将
Result作为属性名称,但将Data作为JSON 键。 -
提示:在以后的问题中,请确保完全包含您的 JSON 数据。似乎您缺少一对周围的
{}。此外,尝试手动构建您的List<List<KeyValuePair<string, string>>>的实例并将其序列化为 JSON - 查看 实际上 是否代表您正在接收的数据的结构 -
创建一个对象,设置一些值,序列化为文本,然后看看你得到了什么。然后你可以找出不匹配的地方。比在 stackoverflow 上询问要快得多。或者只是在 Visual Studio 中使用“将 JSON 粘贴为类”
-
好的,感谢您的编辑。我无法重现您的问题。看看这个:dotnetfiddle.net/00vjcb
-
还要确保您使用的是 NewtonSoft。 System.Text.Json 有奇怪的失败模式,大部分时间都是沉默的。
标签: c# asp.net-web-api json.net