UWP C#应用中如何像JS一样提取JSON文本的指定字段
UWP平台提取JSON指定字段的最简实现方案

针对你当前仅需按照类似JS点语法的方式提取data.best_day.text字段值的需求,完全不需要引入第三方库、也不需要提前为整个JSON结构定义匹配的实体类,用UWP原生内置的JSON解析能力就能零成本实现。
方案核心特点
- 依赖为UWP系统原生内置,不需要额外安装NuGet包,不会出现兼容问题,新手接入不会踩依赖相关的坑
- 字段访问逻辑和JavaScript的点语法几乎完全一致,代码逻辑直观,没有冗余的映射配置
具体代码修改步骤
- 先在MainPage.xaml.cs的顶部引入需要的原生命名空间:
using Windows.Data.Json; - 替换原有按钮点击事件里直接展示全量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; } - 如果需要避免接口返回字段缺失导致的程序崩溃,可以加上简单的层级空判断做兜底,比如:
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
相关产品推荐
相关产品推荐

