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

如何用ServiceStack传递List<T>?DTO中List属性未序列化问题

问题原因及解决方案

ServiceStack的序列化器默认仅处理带有getter和setter的属性,你的Roles是公共字段(field)而非属性(property),因此不会被序列化输出。

解决方法

方法1:将字段改为自动属性(推荐)

修改Roles的定义,添加get; set;使其成为标准属性:

public class PageItemDto {

    public Guid Id { get; set; }
    public Guid PageId { get; set; }
    public Guid ParentId { get; set; }
    public string Name { get; set; }
    public float Ordinal { get; set; } = 0.0f;
    public string RolesJson { get; set; }

    // 修改为自动属性
    public List<string> Roles { get; set; } = new List<string>();
}

方法2:给字段添加序列化标记(不推荐)

若因特殊需求必须保留字段形式,可给Roles添加[DataMember]特性,强制序列化器识别它:

using System.Runtime.Serialization;

public class PageItemDto {

    public Guid Id { get; set; }
    public Guid PageId { get; set; }
    public Guid ParentId { get; set; }
    public string Name { get; set; }
    public float Ordinal { get; set; } = 0.0f;
    public string RolesJson { get; set; }

    [DataMember]
    public List<string> Roles = new List<string>();
}

补充说明

RolesJson能正常输出,是因为它是标准的属性定义(包含get; set;),完全符合ServiceStack的序列化规则。

内容的提问来源于stack exchange,提问作者Steve McNiven-Scott

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 03:22:02