首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何使JSON.Net序列化程序在序列化特定类型时调用ToString()?

如何使JSON.Net序列化程序在序列化特定类型时调用ToString()?
EN

Stack Overflow用户
提问于 2014-03-12 22:38:06
回答 2查看 21.5K关注 0票数 29

我正在使用Newtonsoft.Json序列化程序将C#类转换为JSON。对于某些类,我不需要序列化程序将实例序列化到各个属性,而是只需在对象上调用ToString。

代码语言:javascript
复制
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类的序列化程序结束,我希望有一个可以应用于任何类的序列化程序(我猜是通过属性)。

EN

回答 2

Stack Overflow用户

发布于 2014-03-12 23:08:18

您可以简单地尝试Newtonsoft的JSON构建器库,并使用以下代码序列化Person类型的对象:

代码语言:javascript
复制
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
  });
票数 1
EN

Stack Overflow用户

发布于 2014-03-12 22:42:25

我没有时间测试我的解决方案,但它应该可以工作。假设您正在使用的所有类都是您自己的,为什么不在所有这些类上执行ToString重写,并且需要使用Newtonsoft.Json序列化程序的类只需在ToString方法中序列化并返回。这样,当您想要获得对象的序列化字符串时,总是可以调用ToString。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22354867

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档