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

如何在C#中正确反序列化JSON对象?解决数组反序列化错误

解决JSON反序列化报错:Type System.String' is not supported for deserialization of an array

嘿,这个问题一眼就能看出症结所在!你遇到的反序列化错误,完全是因为模型字段类型和JSON返回的结构不匹配导致的。

问题根源分析

你调用的接口返回的JSON里,callingCodes字段是一个字符串数组(比如某个国家的返回会是"callingCodes": ["+86"],有些国家可能有多个区号),但你在CountriesList模型里把它定义成了string类型——反序列化器自然没法把数组转换成单个字符串,于是就抛出了这个错误。

修复方案

只需要把模型里的callingCodes字段类型改成数组或者列表即可,两种方式都可以:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

namespace ApplicationPortal.Models {
    public class CountriesList {
        public string name { get; set; }
        // 改成List<string>,适合后续需要操作元素的场景
        public List<string> callingCodes { get; set; }
        // 或者改成字符串数组,更轻量化
        // public string[] callingCodes { get; set; }
    }
}

额外小建议

如果之后再遇到类似的JSON结构匹配问题,你可以:

  • 把API返回的JSON内容复制到在线JSON格式化工具里查看字段结构
  • 用Visual Studio的「编辑 → 选择性粘贴 → 将JSON粘贴为类」功能,自动生成完全匹配的模型类,能省不少手动写模型的时间

你的GetCountries方法逻辑是没问题的,修改完模型之后,反序列化就能正常工作了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.07 15:17:27