在 .net MAui 中解析 jsON 最推荐使用内置的 System.Text.json;需先定义匹配的 C# 数据模型,再通过 JsonSerializer.Deserialize(jsonString) 反序列化,支持字符串、文件及网络响应,注意异常处理与异步上下文。

在 .NET MAUI 中解析 JSON 数据,最推荐的方式是使用内置的 System.Text.Json(.NET 6+ 默认 JSON 库),它轻量、高性能、无需额外 NuGet 包,且与 MAUI 完全兼容。
定义匹配的 C# 类型
JSON 解析前必须先有对应的数据模型。比如你收到如下 JSON:
{“name”:”张三”,”age”:28,”isActive”:true}
就应创建一个匹配的类:
public class User { public string Name { get; set; } public int Age { get; set; } public bool IsActive { get; set; } }
注意:属性名默认需与 JSON 字段名一致(区分大小写),如不一致可用 [JsonPropertyName("user_name")] 特性标记。
从字符串反序列化为对象
这是最常见场景,例如从 API 响应或本地 JSON 文件读取后解析:
示例代码:
string json = @"{""name"":""李四"",""age"":30,""isActive"":false}"; try { User user = JsonSerializer.Deserialize(json); Console.WriteLine($"{user.Name}, {user.Age}"); } catch (JsonException ex) { Console.WriteLine("JSON 格式错误:" + ex.Message); }
处理数组和嵌套结构
JSON 数组直接映射为 C# 的 List 或 T[];嵌套对象则用子类表示。
例如解析:
[{“id”:1,”profile”:{“nick”:”小王”,”score”:95}}]
对应模型:
public class Player { public int Id { get; set; } public Profile Profile { get; set; } } public class Profile { public string Nick { get; set; } public int Score { get; set; } }
解析方式不变:
List players = JsonSerializer.Deserialize>(jsonString);
从文件或网络加载 JSON 后解析
MAUI 支持跨平台文件访问(如 Filesystem.appDataDirectory)和 http 请求:
- 读取本地 JSON 文件(如
data.json):
string path = Path.Combine(FileSystem.AppDataDirectory, "data.json"); string json = await File.ReadAllTextAsync(path); var data = JsonSerializer.Deserialize(json);
- 从网络获取(配合
HttpClient):
using var client = new HttpClient(); string json = await client.GetStringAsync("https://api.example.com/users"); var users = JsonSerializer.Deserialize>(json);
注意:网络请求请放在异步方法中,并在 UI 线程安全地更新界面(如用 MainThread.InvokeOnMainThreadAsync)。
基本上就这些。System.Text.Json 在 MAUI 中开箱即用,不需要 Newtonsoft.Json(除非遗留项目强依赖)。只要模型对得上、注意异常处理、分清同步/异步上下文,JSON 解析很稳。