如何高效接收并存储API返回JSON中的货币符号数据
优化JSON反序列化的实现思路提示
问题背景
我正在开发一款货币应用,已找到可获取可用货币信息的API。调用该接口后返回的JSON数据如下:
{"success": true,"symbols": {"AED": "United Arab Emirates Dirham","AFN": "Afghan Afghani","ALL": "Albanian Lek","AMD": "Armenian Dram",[...]}}
我定义的用于接收该JSON数据的类如下:
public class SymbolsResult { public bool Success { get; set; } public string Symbols { get; set; } }
目前Symbols被反序列化为string类型,只能通过繁琐的字符串分割方式将其转换为Dictionary<string, string>,代码如下:
SymbolsResult x = jsonDeserializer.Deserialize<SymbolsResult>(response); Dictionary<string, string> symbols = new Dictionary<string, string>(); var strings = x.Symbols.Split(new char[] { ',' }); foreach(string s in strings) { string ss = s.Replace("{", "").Replace("}", "").Replace(",", "").Replace("\\", ""); var sss = ss.Split(new char[] { ':' }); symbols.Add(sss[0], sss[1]); } return symbols;
请问有没有更优的实现思路?只需要提示即可。
优化思路提示
- 修改
SymbolsResult类中Symbols的类型为Dictionary<string, string>,让JSON序列化器直接完成反序列化,无需手动处理字符串 - 若使用Newtonsoft.Json,可通过
[JsonProperty]特性调整类属性与JSON键名的映射关系(如果名称不匹配) - 若需保留原有类结构,可直接将整个JSON响应反序列化为
Dictionary<string, object>,再提取symbols对应的字典数据 - 完全摒弃手动字符串分割的方式,依赖序列化库的内置能力处理嵌套JSON结构
内容的提问来源于stack exchange,提问作者Michal Szura
相关产品推荐
相关产品推荐

