【发布时间】:2013-10-02 21:26:41
【问题描述】:
我有一组复杂的业务对象,我想将它们序列化为 Json 以在 Web 服务中使用。我目前正在使用 DataContractJsonSerializer 来生成 Json,但由于默认的 XmlReader 无法处理 Base64 字符串,因此它在反序列化方面犹豫不决。
在阅读了许多对 Json.Net 的正面评价后,我决定试一试。令人惊讶的是,如果业务对象覆盖 ToString() 方法,最简单的情况会产生错误输出。它不生成 JSON,而是简单地发出字符串值。
例如,以下语句只产生一个字符串,因为序列化程序似乎将对象视为一个简单的字符串。
public class MyClass {
public string Title{get;set;}
public override ToString(){ return Title; }
public string ToJson(){
return JsonConvert.SerializeObject(this);
}
}
我得到的不是 json 格式的输出,而是标题字符串。我是否必须以某种特殊方式标记对象以避免这种情况?由于业务对象层次结构包含许多覆盖 ToString() 的对象,因此我宁愿避免引入特殊属性等。
【问题讨论】:
-
您的代码工作正常,只有一件事在
ToString方法中调用ToJson。 -
我得到了同样的行为。你有没有发现发生了什么?
标签: c# json serialization json.net