gpt4 book ai didi

c# - C#中使用JSON反序列化成字典

转载 作者:行者123 更新时间:2023-11-30 14:26:33 25 4
gpt4 key购买 nike

我将 JSON 数据反序列化到字典中。这是我的 JSON 数据的样子:

{
"InputKoffRetStats":true,"InputPenaltyStats":false,
"VisitingTeamFootballRbStats":
[{
"AthleteLastName":"John",
"AthleteFirstName":"Smith","Number":9,"IsPresent":true
},
{
"AthleteLastName":"Justin",
"AthleteFirstName":"Brooks","Number":10,"IsPresent":false
}]
}

这就是我将字符串反序列化为字典的方式:

var dict = JsonConvert.DeserializeObject<Dictionary<string, object>>(result);

我遇到的问题是我不知道如何获得第一个运动员的姓氏(约翰)。

如果我这样做:

 Console.WriteLine(dict["InputKoffRetStats"]);

然后我得到“真”。它工作正常。

如果我这样做:

Console.WriteLine(dict["VisitingTeamFootballRbStats"]);

然后我得到了两个运动员(John 和 Justin)的信息。

我怎样才能使用字典只获取第一个运动员的名字?我尝试执行以下操作但没有成功:

Console.WriteLine(dict["VisitingTeamFootballRbStats"][0]);

有什么想法吗?

编辑:我应该提到我展示的 json 只是整个 json 的一小部分。我只是举个例子。

最佳答案

一个完整的工作示例:

public class Athlete
{
public string AthleteLastName { get; set; }
public string AthleteFirstName { get; set; }
public int Number { get; set; }
public bool IsPresent { get; set; }
}

public class Stat
{
public bool InputKoffRetStats { get; set; }
public bool InputPenaltyStats { get; set; }
public List<Athlete> VisitingTeamFootballRbStats { get; set; }
}

class Program
{
static void Main(string[] args)
{
var jsonText = "{" +
" \"InputKoffRetStats\":true,\"InputPenaltyStats\":false," +
" \"VisitingTeamFootballRbStats\":" +
" [{" +
" \"AthleteLastName\":\"John\"," +
" \"AthleteFirstName\":\"Smith\",\"Number\":9,\"IsPresent\":true" +
" }," +
" {" +
" \"AthleteLastName\":\"Justin\"," +
" \"AthleteFirstName\":\"Brooks\",\"Number\":10,\"IsPresent\":false" +
" }]" +
"}";

var stat = JsonConvert.DeserializeObject<Stat>(jsonText);

Console.WriteLine(stat.VisitingTeamFootballRbStats[0].AthleteFirstName);
Console.ReadKey();
}
}

PS.: 您提供的 JSON 有错误。一旦您将 "IsPresent" 用作 bool 值:"IsPresent":true,下次您将其用作字符串时:"IsPresent":No(不正确,因为 No 应该是“No”)。无论如何,我将其更正为 "IsPresent":false

更新:如果你想要“类似 JavaScript”的行为,所以你希望能够执行 someObj["someProperty"]["someNestedProperty"] 你可以这样做:

var stat = JsonConvert.DeserializeObject<JObject>(jsonText);

所以要得到第一个运动员的名字:

var firstName = stat["VisitingTeamFootballRbStats"][0]["AthleteFirstName"].Value<string>();

也就是说,我仍然会为 JSON 中所有可能的字段创建适当的类。

关于c# - C#中使用JSON反序列化成字典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34978755/

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