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

C#将按|分隔的多对象长字符串序列化为JSON的问题求解

问题解决方法

错误原因

  • 原始汇率数据每5个被|分隔的字段对应1条完整记录,你错误地将每个分隔结果单独作为1条记录处理
  • 遍历过程中你把同一个分割字符串赋值给了DailyCourse的所有属性,导致所有属性值完全一致
  • list.Add(model) 写在循环外部,只会把最后一次循环生成的对象加入集合,前面生成的对象全部被丢弃
  • 你提供的测试字符串中BRL 4,016位置漏写了分隔符|,会导致后续字段全部错位,需要先修正

修正后代码

// 修正原始字符串中漏写的|分隔符
var test = "Australia | dolar | 1 | AUD | 15,608 | Brasil | real | 1 | BRL | 4,016 | Bulgaria | lev | 1 | BGN | 13,066 | China | žen-min-pi | 1 | CNY | 3,369";
// 分割后同时去除每个字段前后的多余空格
var split = test.Split('|').Select(item => item.Trim()).ToArray();

var list = new List<DailyCourse>();
// 按步长5遍历,每5个字段组装一个DailyCourse对象
for (int i = 0; i < split.Length; i += 5)
{
    // 边界判断,避免最后剩余字段不足5个时数组越界
    if (i + 4 >= split.Length) break;
    
    var model = new DailyCourse()
    {
        Country = split[i],
        Currency = split[i + 1],
        Amount = split[i + 2], // 如果Amount是数值类型,可转换为int:int.Parse(split[i + 2])
        Code = split[i + 3],
        Course = split[i + 4] // 如果Course是小数类型,可转换为decimal:decimal.Parse(split[i + 4].Replace(',', '.'))
    };
    // 将组装好的对象加入集合,注意Add操作要放在循环内部
    list.Add(model);
}

// 序列化时可开启缩进方便查看
var json = JsonSerializer.Serialize(list, new JsonSerializerOptions { WriteIndented = true });
Console.WriteLine(json);

输出示例

[
  {
    "Date": null,
    "Country": "Australia",
    "Currency": "dolar",
    "Amount": "1",
    "Code": "AUD",
    "Course": "15,608"
  },
  {
    "Date": null,
    "Country": "Brasil",
    "Currency": "real",
    "Amount": "1",
    "Code": "BRL",
    "Course": "4,016"
  },
  {
    "Date": null,
    "Country": "Bulgaria",
    "Currency": "lev",
    "Amount": "1",
    "Code": "BGN",
    "Course": "13,066"
  },
  {
    "Date": null,
    "Country": "China",
    "Currency": "žen-min-pi",
    "Amount": "1",
    "Code": "CNY",
    "Course": "3,369"
  }
]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 20:06:02