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

如何序列化IEnumerable集合中MyModel对象的Date属性

解决方案

你之前的写法错误是因为data是IEnumerable<MyModel>集合,集合本身没有Date属性,必须遍历集合中的每个元素提取Date字段。以下是几种可行的实现方式:

方式1:投影为仅含Date的集合(推荐临时场景)

通过LINQ将原集合投影成只包含Date的匿名对象集合,再序列化:

// 生成仅包含Date属性的对象数组
var dateItems = data.Select(item => new { item.Date });
var serialized = JsonConvert.SerializeObject(dateItems);

如果只需要纯日期字符串数组,可直接投影字符串:

var dateStrings = data.Select(item => item.Date);
var serialized = JsonConvert.SerializeObject(dateStrings);

方式2:修改模型类(适合全局序列化仅需Date的场景)

在MyModel类中给不需要序列化的字段添加[JsonIgnore]特性:

public class MyModel {
    [JsonIgnore]
    public string Title;
    [JsonIgnore]
    public string Description;
    public string Date;
}

之后直接序列化原集合即可,只会保留Date属性:

var serialized = JsonConvert.SerializeObject(data);

方式3:自定义ContractResolver(适合不修改原类的临时场景)

通过自定义契约解析器,动态指定只序列化Date属性:

public class DateOnlyContractResolver : DefaultContractResolver
{
    protected override IList<JsonProperty> CreateProperties(Type type, MemberSerialization memberSerialization)
    {
        var properties = base.CreateProperties(type, memberSerialization);
        // 筛选保留Date属性
        return properties.Where(p => p.PropertyName == nameof(MyModel.Date)).ToList();
    }
}

// 使用示例
var serializerSettings = new JsonSerializerSettings
{
    ContractResolver = new DateOnlyContractResolver()
};
var serialized = JsonConvert.SerializeObject(data, serializerSettings);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 18:32:04