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

如何在Xamarin.Forms应用中提取Azure Face API返回JSON的性别与年龄

解决Xamarin.Forms中解析Azure Face API JSON响应的问题

嘿,别着急!我刚入门Xamarin和Azure服务的时候,也在JSON解析这儿卡过壳,给你几个实用的办法来轻松提取Gender、Age这些人像属性:

方法一:用Json.NET(Newtonsoft.Json)解析(最常用)

这是Xamarin生态里非常流行的JSON解析库,上手简单:

  • 第一步:安装NuGet包
    在你的Xamarin.Forms项目里,打开NuGet包管理器,搜索并安装 Newtonsoft.Json,或者在Package Manager控制台执行:
    Install-Package Newtonsoft.Json
    
  • 第二步:创建对应API响应的模型类
    Azure Face API的响应是一个包含人脸数组的JSON,我们需要创建匹配结构的C#类。你可以直接把API返回的JSON复制到VS的「编辑>选择性粘贴>将JSON粘贴为类」功能,自动生成准确的模型,也可以参考下面的示例:
    public class FaceDetectionResponse
    {
        public List<FaceResult> Faces { get; set; }
    }
    
    public class FaceResult
    {
        public FaceAttributes FaceAttributes { get; set; }
    }
    
    public class FaceAttributes
    {
        public string Gender { get; set; }
        public double Age { get; set; }
        // 如果你需要其他属性,比如Smile、Emotion,也可以在这里添加
    }
    
  • 第三步:解析JSON字符串并提取数据
    假设你已经拿到了API返回的JSON字符串jsonResponse,用下面的代码解析:
    // 反序列化JSON到模型对象
    var faceDetectionResult = JsonConvert.DeserializeObject<FaceDetectionResponse>(jsonResponse);
    
    // 提取第一个人脸的性别和年龄(如果有检测到人脸的话)
    if (faceDetectionResult?.Faces?.Count > 0)
    {
        var firstFace = faceDetectionResult.Faces[0];
        string gender = firstFace.FaceAttributes.Gender;
        double age = firstFace.FaceAttributes.Age;
        
        // 这里就可以把gender和age用在你的UI里啦,比如绑定到Label或者显示弹窗
    }
    

方法二:用System.Text.Json解析(原生.NET方案)

如果你用的是较新版本的Xamarin.Forms(支持.NET Standard 2.0+),可以用.NET原生的System.Text.Json库,不需要额外安装NuGet:

  • 第一步:创建带序列化特性的模型类
    注意要给属性加上JsonPropertyName特性来匹配JSON里的键名,也可以开启大小写不敏感模式:
    using System.Text.Json.Serialization;
    
    public class FaceDetectionResponse
    {
        [JsonPropertyName("faces")]
        public List<FaceResult> Faces { get; set; }
    }
    
    public class FaceResult
    {
        [JsonPropertyName("faceAttributes")]
        public FaceAttributes FaceAttributes { get; set; }
    }
    
    public class FaceAttributes
    {
        [JsonPropertyName("gender")]
        public string Gender { get; set; }
        [JsonPropertyName("age")]
        public double Age { get; set; }
    }
    
  • 第二步:解析JSON字符串
    // 开启大小写不敏感,避免因为键名大小写不一致出错
    var jsonOptions = new JsonSerializerOptions { PropertyNameCaseInsensitive = true };
    var faceDetectionResult = JsonSerializer.Deserialize<FaceDetectionResponse>(jsonResponse, jsonOptions);
    
    // 提取数据的逻辑和上面一样
    if (faceDetectionResult?.Faces?.Count > 0)
    {
        var gender = faceDetectionResult.Faces[0].FaceAttributes.Gender;
        var age = faceDetectionResult.Faces[0].FaceAttributes.Age;
    }
    

新手小贴士

  • 如果你不确定API返回的JSON结构,可以把拿到的字符串复制到在线JSON格式化工具里(比如直接在浏览器搜JSON formatter),就能清晰看到层级关系了。
  • 一定要做空值判断!比如检测是否有faces数组、数组是否为空,避免出现NullReferenceException。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 07:39:19