任何人都可以告诉我如何在没有tools[]
委托的情况下序列化和反序列化数组Func
的一部分:
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()};
提前感谢您的回复。
答案 0 :(得分:4)
您可以做的一件事是利用DataContract和DataMember属性来序列化您想要的数据。
[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.NET和DataContractJsonSerialize。
我喜欢这种方法是让你保持标准的C#属性命名约定,但仍然输出“正确套装”的JSON。
[DataMember(Name="last_use")]
public int LastUse { get; set; }
将输出
{"last_use": 1}