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

C#使用Newtonsoft JSON反序列化匿名对象数组为List的方法

解决方法

首先,你的API返回的是JSON数组,要将其反序列化成List<dmReturn_Token_BaseMetadata>,核心问题大概率是dmReturn_Token_BaseMetadata模型与JSON字段不匹配,先确保模型定义正确:

正确的模型定义

根据你提供的JSON结构,模型需和字段名、数据类型严格对应(注意JSON字段为小写,C#属性默认大写,需通过JsonProperty特性映射):

using Newtonsoft.Json;

public class dmReturn_Token_BaseMetadata
{
    [JsonProperty("address")]
    public string Address { get; set; }

    [JsonProperty("name")]
    public string Name { get; set; }

    [JsonProperty("symbol")]
    public string Symbol { get; set; }

    [JsonProperty("decimals")]
    public string Decimals { get; set; }

    [JsonProperty("logo")]
    public string Logo { get; set; }

    [JsonProperty("logo_hash")]
    public string LogoHash { get; set; }

    [JsonProperty("thumbnail")]
    public string Thumbnail { get; set; }

    [JsonProperty("block_number")]
    public string BlockNumber { get; set; } // JSON中为字符串或null,用string接收

    [JsonProperty("validated")]
    public int? Validated { get; set; } // JSON中为数字或null,用可空int接收

    [JsonProperty("created_at")]
    public DateTime CreatedAt { get; set; }
}

正确的反序列化代码

模型正确后,直接使用你尝试过的E方案即可成功:

List<dmReturn_Token_BaseMetadata> tokenMetadataList = JsonConvert.DeserializeObject<List<dmReturn_Token_BaseMetadata>>(jString);

也可以先用数组形式的D方案,再转成List:

dmReturn_Token_BaseMetadata[] tokenMetadataArray = JsonConvert.DeserializeObject<dmReturn_Token_BaseMetadata[]>(jString);
List<dmReturn_Token_BaseMetadata> tokenMetadataList = tokenMetadataArray.ToList();

你之前代码失败的原因分析

  • A、B、F、G:误用DeserializeAnonymousType方法,该方法用于反序列化到匿名类型,而你需要的是强类型的列表/数组,完全没必要使用。
  • C:语法错误,DeserializeObject的泛型参数必须是明确的类型(如List<dmReturn_Token_BaseMetadata>或dmReturn_Token_BaseMetadata[]),不能是new[] {new dmReturn_Token_BaseMetadata()}这种实例化表达式。
  • D、E:这两个方案本身逻辑正确,失败原因是模型与JSON字段不匹配(比如大小写未映射、数据类型错误,例如validated定义为非可空int时,遇到JSON中的null会报错;block_number定义为int时,遇到字符串格式的数字或null也会报错)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 18:57:17