我正在使用Newtonsoft.Json序列化程序将C#类转换为JSON。对于某些类,我不需要序列化程序将实例序列化到各个属性,而是只需在对象上调用ToString。
public class Person
{
public string FirstName { get; set; }
public string LastName { get; set; }
public override string ToString() { return string.Format("{0} {1}", FirstName, LastName ); }
}
如何将Person对象序列化为其ToString()方法的结果?我可能有很多这样的类,所以我不想以特定于Person类的序列化程序结束,我希望有一个可以应用于任何类的序列化程序(我猜是通过属性)。
发布于 2014-03-12 23:08:18
您可以简单地尝试Newtonsoft的JSON构建器库,并使用以下代码序列化Person类型的对象:
Dictionary<string, object> collection = new Dictionary<string, object>()
{
{"First", new Person(<add FirstName as constructor>)},
{"Second", new Person(<add LastName as constructor>)},
};
string json = JsonConvert.SerializeObject(collection, Formatting.Indented, new JsonSerializerSettings
{
TypeNameHandling = TypeNameHandling.All,
TypeNameAssemblyFormat = FormatterAssemblyStyle.Simple
});
发布于 2014-03-12 22:42:25
我没有时间测试我的解决方案,但它应该可以工作。假设您正在使用的所有类都是您自己的,为什么不在所有这些类上执行ToString重写,并且需要使用Newtonsoft.Json序列化程序的类只需在ToString方法中序列化并返回。这样,当您想要获得对象的序列化字符串时,总是可以调用ToString。
https://stackoverflow.com/questions/22354867
复制相似问题