【问题标题】:Json.net serialize only part of arrayJson.net 仅序列化数组的一部分
【发布时间】:2012-12-27 18:44:28
【问题描述】:

谁能告诉我如何在没有Func委托的情况下仅序列化和反序列化数组tools[]的一部分:

    public class Tool
    {
        public Tool()
        {
            lastUse = 1;
            running = false;
        }
        public Func<int> action;
        public bool running;
        public int lastUse;
    }
    public static Tool[] tools = new Tool[] { new Tool(), new Tool(), new Tool(),new Tool()};

提前感谢您的任何回复。

【问题讨论】:

  • 你能显示你想要序列化的数据吗?

标签: c# arrays json serialization


【解决方案1】:

您可以做的一件事是利用DataContractDataMember 属性仅序列化您想要的数据。

[DataContract]
public class Tool
{
    public Tool()
    {
        lastUse = 1;
        running = false;
    }

    public Func<int> action;

    [DataMember]
    public bool running;

    [DataMember]
    public int lastUse;
}

没有属性的结果:

[{"action":null,"running":false,"lastUse":1},{"action":null,"running":false,"lastUse":1},{"action":null,"running":false,"lastUse":1},{"action":null,"running":false,"lastUse":1}]

带有属性:

[{"running":false,"lastUse":1},{"running":false,"lastUse":1},{"running":false,"lastUse":1},{"running":false,"lastUse":1}]

这适用于Json.NETDataContractJsonSerialize

我喜欢这种方法的地方在于,它可以让您保持标准的 C# 属性命名约定,但仍然输出“大小写正确”的 JSON。

[DataMember(Name="last_use")]
public int LastUse { get; set; }

会输出

{"last_use": 1}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-06-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-20
    • 2011-02-08
    • 1970-01-01
    相关资源
    最近更新 更多