反序列化对象时出现「无无参构造函数」错误的原因及解决
反序列化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
相关产品推荐
相关产品推荐

