如何在Xamarin Forms应用中通过REST服务获取JSON指定字段值
嘿,我来帮你搞定Xamarin Forms里提取JSON指定值的事儿!针对你拿到的REST返回JSON,我给你分享几种实用的方法,都是日常开发里常用的:
方法一:强类型反序列化(推荐,类型安全)
这种方式最稳妥,先把JSON结构映射成C#类,再反序列化取值,不容易出错。
1. 用Newtonsoft.Json(Json.NET)
这是很多Xamarin开发者的首选库,成熟好用:
- 先给项目安装NuGet包:右键项目 → 管理NuGet包 → 搜索
Newtonsoft.Json安装 - 创建对应JSON结构的模型类:
public class ApiResponse { public bool Success { get; set; } public List<string> ErrorMessages { get; set; } public ResponseData Data { get; set; } } public class ResponseData { public string text { get; set; } // 和JSON键名保持一致,或者用JsonProperty特性映射 public int value { get; set; } }
- 反序列化并提取值:
// 假设response是你请求返回的HttpResponseMessage var jsonString = await response.Content.ReadAsStringAsync(); var apiResponse = JsonConvert.DeserializeObject<ApiResponse>(jsonString); // 拿到你要的指定值 string targetText = apiResponse.Data.text; // 结果是"Yes" int targetValue = apiResponse.Data.value; // 结果是100
2. 用System.Text.Json(.NET 5+自带)
如果你的Xamarin项目基于较新的.NET版本,直接用系统自带的库就行,不用额外装包:
- 模型类可以加特性映射大小写(如果你的属性名和JSON键名大小写不一致的话):
public class ResponseData { [JsonPropertyName("text")] public string Text { get; set; } [JsonPropertyName("value")] public int Value { get; set; } }
- 反序列化取值:
var jsonString = await response.Content.ReadAsStringAsync(); var apiResponse = JsonSerializer.Deserialize<ApiResponse>(jsonString); string targetText = apiResponse.Data.Text; int targetValue = apiResponse.Data.Value;
应急方案:动态反序列化(临时用用可以)
要是不想写模型类,临时应急的话可以用动态方式,但不推荐长期用——因为没有类型检查,JSON结构一变就容易报错:
- Newtonsoft.Json动态写法:
var jsonString = await response.Content.ReadAsStringAsync(); dynamic dynamicResp = JsonConvert.DeserializeObject(jsonString); string targetText = dynamicResp.Data.text; int targetValue = dynamicResp.Data.value;
- System.Text.Json动态写法:
var jsonString = await response.Content.ReadAsStringAsync(); using var doc = JsonDocument.Parse(jsonString); var root = doc.RootElement; string targetText = root.GetProperty("Data").GetProperty("text").GetString(); int targetValue = root.GetProperty("Data").GetProperty("value").GetInt32();
内容的提问来源于stack exchange,提问作者charitht99 perera
相关产品推荐
相关产品推荐

