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

如何将含数字属性、日期对象的JSON转换为C#类模型

将带有数字前缀属性和动态日期键的JSON转换为C#类

嘿,我来帮你搞定这个JSON转C#类的问题!针对你给出的这种带数字前缀属性、日期作为动态键的JSON结构,咱们可以通过属性映射和字典类型完美解决,下面是具体方案:

1. 完整的C#类定义

首先,咱们创建对应的数据模型,用属性特性来映射那些带数字前缀的JSON字段,用字典来处理动态的日期键:

using Newtonsoft.Json; // 如果用Json.NET,需要安装这个NuGet包
// 如果你用System.Text.Json(.NET Core/.NET 5+),替换为using System.Text.Json.Serialization;

public class StockPriceData
{
    [JsonProperty("Meta Data")]
    // System.Text.Json用[JsonPropertyName("Meta Data")]
    public MetaData MetaData { get; set; }

    [JsonProperty("Time Series (Daily)")]
    // System.Text.Json用[JsonPropertyName("Time Series (Daily)")]
    public Dictionary<string, DailyTimeSeries> DailyTimeSeries { get; set; }
}

public class MetaData
{
    [JsonProperty("1. Information")]
    public string Information { get; set; }

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

    [JsonProperty("3. Last Refreshed")]
    public string LastRefreshed { get; set; }

    [JsonProperty("4. Output Size")]
    public string OutputSize { get; set; }

    [JsonProperty("5. Time Zone")]
    public string TimeZone { get; set; }
}

public class DailyTimeSeries
{
    [JsonProperty("1. open")]
    public string Open { get; set; }

    [JsonProperty("2. high")]
    public string High { get; set; }

    [JsonProperty("3. low")]
    public string Low { get; set; }

    [JsonProperty("4. close")]
    public string Close { get; set; }

    [JsonProperty("5. volume")]
    public string Volume { get; set; }
}

2. 关键处理逻辑说明

  • 数字前缀属性映射:C#的属性名称不能以数字开头,所以我们用[JsonProperty](Json.NET)或[JsonPropertyName](System.Text.Json)特性,把C#的友好属性名和JSON里带数字的字段名一一对应起来,序列化/反序列化时就能正确匹配。
  • 动态日期键处理:JSON里的Time Series (Daily)是一个以日期字符串为键的对象,咱们用Dictionary<string, DailyTimeSeries>来接收它——字典的键就是日期字符串,值就是对应日期的价格数据,不管有多少个日期条目都能自动解析。

3. 反序列化示例

假设你已经有了JSON字符串,用Json.NET反序列化的代码如下:

// 假设jsonString是你的目标JSON内容
string jsonString = "{你的JSON内容}";
var stockData = JsonConvert.DeserializeObject<StockPriceData>(jsonString);

// 访问数据示例
Console.WriteLine($"股票代码:{stockData.MetaData.Symbol}");
Console.WriteLine($"最新更新日期:{stockData.MetaData.LastRefreshed}");

// 遍历每日数据
foreach (var dailyEntry in stockData.DailyTimeSeries)
{
    Console.WriteLine($"日期:{dailyEntry.Key},收盘价:{dailyEntry.Value.Close}");
}

如果用System.Text.Json,代码是这样的:

using System.Text.Json;

var stockData = JsonSerializer.Deserialize<StockPriceData>(jsonString);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 03:32:28