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

反序列化对象时出现「无无参构造函数」错误的原因及解决

反序列化Octopus.Client相关对象时的构造函数错误问题

我实现了一套对象序列化/反序列化逻辑:将对象序列化为JSON文件存储,再从文件反序列化回原始对象。序列化过程正常,生成的JSON格式符合预期,但反序列化时抛出以下错误:

不支持对无无参构造函数、无单一参数化构造函数或无标注JsonConstructorAttribute的参数化构造函数的类型进行反序列化。类型为'Octopus.Client.Model.PersistenceSettingsResource'

我尝试在目标类PackagedProject中添加了标注[JsonConstructor]的无参构造函数,但错误仍然存在。隐约记得之前用相同方式实现时不需要额外添加构造函数,但无法确认记忆是否准确。

相关代码

public class PackagedProject
{
    [JsonConstructor]
    public PackagedProject() { }
    public ProjectResource ProjectResource { get; set; }
    public VariableSetResource VariableSetResource { get; set; }
}

public class OctopusService
{
    public OctopusService(IConfiguration config)
    {
        var filename = "projects.json";
        SerializeProjects(packagedProject, filename);
        var deserializedProjects = DeserializedProjects(filename);
    }

    public void SerializeProjects(List<PackagedProject> projects, string filename)
    {
        var jsonString = JsonSerializer.Serialize(projects, new JsonSerializerOptions { WriteIndented = true });
        File.WriteAllText(filename, jsonString);
    }

    public List<PackagedProject> DeserializedProjects(string filename)
    {
        var currentDir = Directory.GetCurrentDirectory();
        var fileText = File.ReadAllText(currentDir + "/" + filename);

        var deserializedProjects = JsonSerializer.Deserialize<List<PackagedProject>>(fileText);
        return deserializedProjects;
    }
}

补充说明

错误信息中提到的PersistenceSettingsResource是Octopus.Client库中的类型,但我反序列化的目标类型是List<PackagedProject>,并非Octopus官方的模型类。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 15:10:09