如何根据JSON.NET中的自定义属性有条件地反序列化属性

时间:2014-01-16 19:17:07

标签: c# json json.net deserialization

假设我有以下类:

public class SomeBase
{
}

public class ACommon : SomeBase
{
    [IsInput, IsOutput, IsInternal]
    public int AInput1 { get; set; }
    [IsOutput, IsInternal]
    public int AOutput1 { get; set; }
    [IsInternal]
    public int AInternal1 { get; set; }

    [IsOutput, IsInternal]
    public new BCommon ARefToB { get; set; }
}


public class BCommon : SomeBase
{
    [IsInput, IsOutput, IsInternal]
    public int BInput1 { get; set; }
    [IsOutput, IsInternal]
    public int BOutput1 { get; set; }
    [IsInternal]
    public int BInternal1 { get; set; }
}

假设我有以下描述ACommon对象的JSON:

  

“{\” AInput1 \ “:1,\” AOutput1 \ “:2,\” AInternal1 \ “:3,\” ARefToB \ “:{\” BInput1 \ “:11,\” BOutput1 \“: 12,\ “BInternal1 \”:13}}“

我希望能够以不同的方式反序列化这个字符串:

  1. 所有属性都已反序列化
  2. 具有IsInternal属性的所有属性都设置为某个自定义值
  3. 具有IsInternal或IsOutput属性的所有属性都设置为某个自定义值
  4. 因此,例如,当我使用第三个选项反序列化时,我的对象看起来像:

      

    A.AInput = 1

         

    A.AOutput1 = -1

         

    A.AInternal1 = -1

         

    A.ARefToB.BInput1 = 11

         

    A.ARefToB.BOutput1 = -1

         

    A.ARefToB.BInternal1 = -1

    我一直在研究使用自定义转换器,但在以相同方式递归转换父对象中的每个对象方面还没有成功。

0 个答案:

没有答案