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

如何使用JsonConvert.DeserializeObject()获取JSON中的points字段值

使用Json.NET获取指定JSON中points字段值的实现方案

你可以选择以下两种方式,通过JsonConvert.DeserializeObject()完成取值:

方案一:强类型反序列化(类型安全,推荐生产环境使用)

按照JSON的层级结构定义对应的C#实体类,反序列化后直接通过属性访问即可。

  1. 定义匹配结构的实体类
using Newtonsoft.Json;
using System.Collections.Generic;

// 最外层根结构
public class Root
{
    public DataSection Data { get; set; }
}

public class DataSection
{
    public List<Gamer> Gamers { get; set; }
}

public class Gamer
{
    public string Id { get; set; }
    public System.DateTime StartTime { get; set; }
    public decimal Points { get; set; } // 对应points字段,小数场景用decimal精度更高,也可替换为double
    public HashDetail Hash { get; set; }
}

public class HashDetail
{
    public string Id { get; set; }
    public string Hash { get; set; }
    [JsonProperty("__typename")] // 映射含特殊命名的字段
    public string TypeName { get; set; }
}
  1. 执行反序列化取值
// 替换为实际获取到的JSON字符串
string rawJson = "你的JSON文本内容";
// 注意:原始JSON中hash字段闭合花括号后存在多余逗号,需先移除避免JSON语法报错
Root result = JsonConvert.DeserializeObject<Root>(rawJson);

// 遍历获取所有points值
if (result?.Data?.Gamers != null)
{
    foreach (var gamer in result.Data.Gamers)
    {
        decimal points = gamer.Points;
        // 此处即可拿到对应points值,示例数据中该值为11.647601
    }
}

方案二:动态解析(无需预定义实体类,适合快速临时取值)

如果不想定义完整实体类,可以借助Json.NET的LINQ to JSON能力按层级直接索引取值:

using Newtonsoft.Json.Linq;
using System.Collections.Generic;
using System.Linq;

string rawJson = "你的JSON文本内容";
JObject parsedObj = JObject.Parse(rawJson);

// 批量获取所有Gamers下的points值
List<decimal> allPoints = parsedObj["data"]["Gamers"]
    .Select(g => g["points"].Value<decimal>())
    .ToList();

// 仅取第一个Gamer的points值可直接写:
// decimal firstPoints = parsedObj["data"]["Gamers"][0]["points"].Value<decimal>();

提示:如果JSON字段命名和C#属性命名不一致,可以给属性加[JsonProperty("JSON中对应的字段名")]特性做映射,避免取值失败。

内容的提问来源于stack exchange,提问作者jefferson soares

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 20:21:17