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

JSON反序列化对象报错,求解决方案(附JSON及实体类代码)

解决JSON反序列化集合的问题

我来帮你搞定这个反序列化的问题~从你给出的信息来看,主要问题是缺少外层对象的类定义,另外还有一些细节可以优化,具体解决步骤如下:

1. 补全类结构

你只定义了datapoint类,但JSON里每个元素是包含target和datapoints的对象,序列化器需要对应的类来映射这些属性。同时建议把x的类型从int改成long——虽然当前的时间戳1523858700在int范围内,但Unix时间戳后续会超过int的最大值(2147483647,对应2038年),用long更稳妥。

如果你用的是Json.NET(Newtonsoft.Json):

using Newtonsoft.Json;

// 对应JSON里的外层对象
public class MetricData
{
    [JsonProperty("target")]
    public string Target { get; set; }

    [JsonProperty("datapoints")]
    public List<Datapoint> Datapoints { get; set; }
}

// 数据点类,补全完整定义
public class Datapoint
{
    [JsonProperty("x")]
    public long X { get; set; }

    [JsonProperty("y")]
    public decimal Y { get; set; }
}

如果你用的是.NET内置的System.Text.Json:

特性名称会不一样,调整如下:

using System.Text.Json.Serialization;

public class MetricData
{
    [JsonPropertyName("target")]
    public string Target { get; set; }

    [JsonPropertyName("datapoints")]
    public List<Datapoint> Datapoints { get; set; }
}

public class Datapoint
{
    [JsonPropertyName("x")]
    public long X { get; set; }

    [JsonPropertyName("y")]
    public decimal Y { get; set; }
}

2. 执行反序列化

有了完整的类结构后,就可以正常反序列化为集合了:

Json.NET版本:

string yourJson = @"[ { ""target"":""FDOL00001"", ""datapoints"":[ { ""y"":72.564, ""x"":1523858700 } ] }, { ""target"":""FDOL00001"", ""datapoints"":[ { ""y"":86.366, ""x"":1523858700 } ] }, { ""target"":""FDOL00001"", ""datapoints"":[ { ""y"":73.90195818815343, ""x"":1523858700 } ] } ]";

var metricCollection = JsonConvert.DeserializeObject<List<MetricData>>(yourJson);

System.Text.Json版本:

var metricCollection = System.Text.Json.JsonSerializer.Deserialize<List<MetricData>>(yourJson);

额外注意点

  • 确保已经安装了对应的NuGet包:Json.NET需要安装Newtonsoft.Json,System.Text.Json是.NET Core/.NET 5+内置的,无需额外安装。
  • 如果一定要保留x为int,要确认当前及未来的时间戳不会超出int的范围(-2147483648到2147483647),否则会抛出溢出异常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 06:38:07