You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Json.Net解析JSON数组:读取sites节点数据遇阻求助

解决JSON中sites节点读取问题

看起来你在解析这段赛事JSON的sites节点时遇到了小麻烦,我来帮你梳理下怎么搞定它~

首先先明确你的JSON结构层级:

"events" → "Arsenal_West Ham United" → "sites" → 包含williamhill等博彩站点数据

下面分两种常用的解析场景给出解决方案:

场景1:动态解析(无实体类,适合快速读取)

如果你用的是Newtonsoft.Json(Json.NET),可以通过JToken/JObject来动态读取节点:

// 假设你的原始JSON字符串为jsonStr
JObject rootJson = JObject.Parse(jsonStr);

// 先定位到具体的赛事对象(Arsenal对阵West Ham United的那场)
JToken match = rootJson["events"]["Arsenal_West Ham United"];

// 直接读取sites节点,注意要转换成JObject类型
JObject sites = (JObject)match["sites"];

// 如果你需要进一步读取williamhill的赔率数据
JObject williamhillSite = (JObject)sites["williamhill"];
JArray h2hOdds = (JArray)williamhillSite["odds"]["h2h"];

// 示例:打印h2h赔率
foreach (var odd in h2hOdds)
{
    Console.WriteLine($"赔率:{odd.ToString()}");
}

如果你的代码里用了match.Value<...>,要注意**Value<T>()是用来读取当前JToken的原始值,而sites是一个嵌套对象,所以应该先通过match["sites"]定位到这个对象节点,再进行类型转换**,而不是直接对match调用Value。

场景2:强类型解析(更规范,适合长期维护)

如果是用System.Text.Json或者Newtonsoft.Json的强类型序列化,可以先定义对应的数据类,再直接反序列化读取:

1. 定义匹配JSON结构的实体类

// 顶级对象
public class EventRoot
{
    public Dictionary<string, MatchDetail> events { get; set; }
}

// 单场赛事详情
public class MatchDetail
{
    public string sport { get; set; }
    public string sport_display { get; set; }
    public List<string> participants { get; set; }
    public string home_team { get; set; }
    public string commence { get; set; }
    public string status { get; set; }
    public Dictionary<string, SiteDetail> sites { get; set; }
}

// 博彩站点详情
public class SiteDetail
{
    public Dictionary<string, List<string>> odds { get; set; }
    public long last_update { get; set; }
}

2. 反序列化并读取sites

// System.Text.Json方式
EventRoot root = JsonSerializer.Deserialize<EventRoot>(jsonStr);
MatchDetail targetMatch = root.events["Arsenal_West Ham United"];
var sites = targetMatch.sites; // 这里直接拿到sites的字典对象

// 读取williamhill的h2h赔率
var williamhillH2hOdds = sites["williamhill"].odds["h2h"];

这样处理后,你就能轻松获取到sites节点下的所有数据啦~

内容的提问来源于stack exchange,提问作者Geordey Gatt

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 07:43:55