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
相关产品推荐
相关产品推荐

