You need to enable JavaScript to run this app. UWP C#应用中如何像JS一样提取JSON文本的指定字段
优惠活动
大模型
产品
解决方案
定价
更多

UWP C#应用中如何像JS一样提取JSON文本的指定字段

UWP平台提取JSON指定字段的最简实现方案

按钮点击后获取到的WakaTime接口返回的全量JSON内容截图

针对你当前仅需按照类似JS点语法的方式提取data.best_day.text字段值的需求,完全不需要引入第三方库、也不需要提前为整个JSON结构定义匹配的实体类,用UWP原生内置的JSON解析能力就能零成本实现。

方案核心特点

  • 依赖为UWP系统原生内置,不需要额外安装NuGet包,不会出现兼容问题,新手接入不会踩依赖相关的坑
  • 字段访问逻辑和JavaScript的点语法几乎完全一致,代码逻辑直观,没有冗余的映射配置

具体代码修改步骤

  1. 先在MainPage.xaml.cs的顶部引入需要的原生命名空间:
    using Windows.Data.Json;
  2. 替换原有按钮点击事件里直接展示全量JSON的逻辑,改成先解析JSON再按层级取目标值,修改后的完整事件代码如下:
    private async void Button_Click(object sender, RoutedEventArgs e)
    {
        var client = new HttpClient();
        // 获取接口返回的全量JSON字符串
        var fullJson = await client.GetStringAsync("https://wakatime.com/share/@DontBugMie/bef7afe4-102d-47a9-9678-6335510ebedd.json");
        
        // 将字符串解析为可层级索引的JSON对象
        JsonObject rootNode = JsonObject.Parse(fullJson);
        // 按照和JS完全一致的层级路径取目标值
        string bestDayText = rootNode["data"]["best_day"]["text"].GetString();
        
        // 将提取到的目标值(示例为"18 hrs 3 mins")展示在文本框
        TextBox.Text = bestDayText;
    }
    
  3. 如果需要避免接口返回字段缺失导致的程序崩溃,可以加上简单的层级空判断做兜底,比如:
    string bestDayText = "暂无对应数据";
    // 逐级判断字段是否存在
    if (rootNode.ContainsKey("data") 
        && rootNode["data"].GetObject().ContainsKey("best_day")
        && rootNode["data"]["best_day"].GetObject().ContainsKey("text"))
    {
        bestDayText = rootNode["data"]["best_day"]["text"].GetString();
    }
    TextBox.Text = bestDayText;
    

常见踩坑提醒

  • 不需要专门找“强类型反序列化、为所有JSON字段建类”的复杂教程,对于你当前仅需提取单个字段的需求,这种层级索引的写法是最短实现路径,没有多余逻辑
  • 不要错用其他JSON库的索引语法,UWP原生的Windows.Data.Json的访问逻辑是完全针对动态字段提取优化的,新手适配成本最低
  • 实际使用时可以把JSON解析逻辑包裹在try-catch块中,避免接口返回异常格式的JSON时程序直接闪退

内容的提问来源于stack exchange,提问作者Maya Wright

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.02 09:36:04