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

C#属性访问问题已解决:重写ToString方法实现加密API响应展示

解决加密货币API响应的属性访问与字符串展示问题

我之前碰到了加密货币API响应的属性访问问题——API返回的字段名和我定义的类属性名不匹配,导致序列化后没法便捷地展示需要的数据。在社区小伙伴的帮助下,通过给实体类添加序列化特性并重写ToString()方法,完美解决了这个问题,下面是完整的实现代码:

1. 实体类定义(含序列化映射)

这里用[DeserializeAs]特性把API返回的字段名和类属性做映射,同时重写ToString()方法来直接输出关键信息:

public class CryptoApiResponse 
{ 
    [DeserializeAs(Name = "ticker")] 
    public List<CryptoAttributes> CryptoCurrency { get; set; } 

    public override string ToString() 
    { 
        return $"Currency:{CryptoCurrency[0].Currency} " + 
               $"PriceFiat:{CryptoCurrency[0].PriceFiat} " + 
               $"Fiat:{CryptoCurrency[0].TargetFiat}"; 
    } 
}

public class CryptoAttributes 
{ 
    [DeserializeAs(Name = "base")] 
    public string Currency { get; set; } 

    [DeserializeAs(Name = "target")] 
    public string TargetFiat { get; set; } 

    [DeserializeAs(Name = "price")] 
    public string PriceFiat { get; set; } 
}

2. 数据展示方法

这个泛型方法用来遍历API返回的列表,直接调用重写后的ToString()输出格式化后的信息:

public void Display<CryptoApiResponse>(List<CryptoApiResponse> apiList) 
{ 
    if (apiList != null) 
    { 
        foreach (CryptoApiResponse cryptoCurrency in apiList) 
        { 
            Console.WriteLine(cryptoCurrency.ToString()); 
        } 
    } 
    Console.ReadLine(); 
}

小说明

  • [DeserializeAs]特性解决了API字段名(比如ticker、base)和自定义属性名不一致的序列化问题,确保数据能正确映射到类属性中。
  • 重写ToString()方法后,不需要每次手动拼接属性值,直接输出对象就能得到格式化后的关键信息,简化了展示逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 03:35:17