C#-Json.net JsonIgnore对嵌套类不起作用

我正在尝试使用Json.net序列化一些第三方json,问题是他们开始将Ids作为由Guid插入的字符串发送.因此,我试图忽略序列化中的ID,但是嵌套属性中似乎存在一个问题,即JsonIgnore无法正常工作.因此,我决定在之后添加自己的ID,但是序列化本身似乎并没有忽略我需要的东西.

我的类用于序列化:

public class ItemA: General.Common
{
    [JsonIgnore]
    public new Guid Id { get; set; } //hiding Guid Id Common
    public Folder ParentFolder { get; set; }
    //...
}

public class Folder
{
    public string Id { get; set; }

    public string Path { get; set; }
}

public class ItemB: NotImportant
{
    //...
    public List<Folder> Folders { get; set; } = new List<Folder>();
    public List<ItemA> ItemAs{ get; set; } = new List<ItemA>();
}

我的代码:

        var jsonSettings = new JsonSerializerSettings
        {
            NullValueHandling = NullValueHandling.Ignore,
            ReferenceLoopHandling = ReferenceLoopHandling.Ignore
        };

        string json = "some Json-that includes some Ids as strings";
        dynamic d = JsonConvert.DeserializeObject<ItemB>(json, jsonSettings);
        //serialization error here that cannot convert string to Guid in ItemAs 
        ((ItemB)d).ItemAs.ForEach(x => x.Id = new Guid());

编辑:
错误是这样的:

Error converting value "RgAAAAAD01CCe0GCRpDdKTQq2OCQBwAIuTruAfDrRZi9RPZnww3OAAAAAAEMAAAIuTruAfDrRZi9RPZnww3OAABE1hqaAAAA" to type 'System.Guid'...
最佳答案
对此有一个官方问题:

Issue #463 – JsonIgnore attribute on shadowed properties

它们是单独的属性,一个恰好隐藏了另一个.通过忽略“派生”上的一个,则不再隐藏基本属性,而是对其进行序列化.如果要忽略两者,则在两者上都放置[JsonIgnore],或者要在[Derived]类上忽略[JsonIgnore],则将属性设为virtual并将其覆盖在Derived上. –JamesNK

转载注明原文:C#-Json.net JsonIgnore对嵌套类不起作用 - 代码日志