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

如何将指定JSON转换为以Date为键的C#字典类?在线工具转换结果不符

把你的POSTMAN JSON转换成符合需求的C#类

没问题,我来帮你搞定这个转换!你的JSON结构是日期字符串作为键,对应的值是一组包含时长、起止时间的时间段数组,完全可以通过「自定义实体类+字典」的组合来完美匹配,以下是具体实现步骤:

1. 先创建表示单个时间段的实体类

这个类对应JSON里每个独立的时间段对象,属性名要和JSON中的键保持一致(如果用默认序列化规则的话,大小写也得匹配,不过后续可以通过配置忽略大小写):

public class TimeEntry
{
    public int Duration { get; set; }
    public string End { get; set; }
    public string Start { get; set; }
}

2. 用字典来映射日期和时间段数组

你的需求是「以Date为键、其他属性为值的字典」,这里的Date是JSON里的日期字符串,所以直接用Dictionary<string, List<TimeEntry>>就可以完美对应整个JSON结构:

反序列化示例(常用两种序列化库)

用Newtonsoft.Json(Json.NET,最常用的第三方库)

如果你项目里用的是Json.NET,反序列化代码很简单:

using Newtonsoft.Json;

// 假设你的JSON内容已经存在jsonString变量中
var dateToTimeEntries = JsonConvert.DeserializeObject<Dictionary<string, List<TimeEntry>>>(jsonString);

用System.Text.Json(.NET Core 3.0+自带,无需额外安装)

如果用的是.NET自带的序列化库,可以这样写,还能配置忽略大小写(避免因为JSON键大小写和类属性不一致出问题):

using System.Text.Json;

var serializerOptions = new JsonSerializerOptions
{
    PropertyNameCaseInsensitive = true
};
var dateToTimeEntries = JsonSerializer.Deserialize<Dictionary<string, List<TimeEntry>>>(jsonString, serializerOptions);

进阶:把字典键转换成DateTime类型

如果不想用字符串作为键,希望直接用DateTime类型,可以做一点小处理:

方案1(Json.NET直接支持)

var jsonSettings = new JsonSerializerSettings
{
    DateParseHandling = DateParseHandling.DateTime,
    DateTimeZoneHandling = DateTimeZoneHandling.Local // 根据你的时区需求调整,比如Utc
};
var dateToTimeEntries = JsonConvert.DeserializeObject<Dictionary<DateTime, List<TimeEntry>>>(jsonString, jsonSettings);

方案2(System.Text.Json转换)

因为System.Text.Json默认不支持DateTime作为字典键,所以可以先反序列化成字符串键的字典,再转成DateTime键:

var stringKeyDict = JsonSerializer.Deserialize<Dictionary<string, List<TimeEntry>>>(jsonString, serializerOptions);
var dateKeyDict = stringKeyDict.ToDictionary(
    kvp => DateTime.Parse(kvp.Key),
    kvp => kvp.Value
);

这样处理后,你就可以通过dateToTimeEntries["2020-08-27"]或者dateKeyDict[new DateTime(2020,8,27)]直接获取对应日期的所有时间段了,完全符合你的需求!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.08 18:33:09