我有以下课程
[Serializable]
public class ApiRequestStatus :IEquatable<ApiRequestStatus>
{
public static readonly ApiRequestStatus Failure =
new ApiRequestStatus("Failure");
public static readonly ApiRequestStatus Success =
new ApiRequestStatus("Success");
private string _status;
private ApiRequestStatus(string status)
{
this._status = status;
}
public override string ToString()
{
return _status;
}
public bool Equals(ApiRequestStatus other)
{
return this._status == other._status;
}
}
使用System.Web.Script.Serialization.JavaScriptSerializer
对其进行序列化时,我希望将其序列化为字符串"Failure"
或"Success"
。
我已尝试实现自定义JavaScriptConverter
,但这会将我的对象呈现为具有零个或多个属性的对象,具体取决于我返回的IDictionary<string, object>
。
e.g。当我返回并清空IDictionary<string, object>
时,我的对象显示为空的JavaScript对象:{ }
。
如果我返回new Dictionary<string, object> { {"_status", status._status}}
,我的对象显示为{ "_status" : "Success" }
。
如何将对象序列化为_status
字段的字符串值?
答案 0 :(得分:1)
在您的班级中添加ToJsonString()
方法,并手动控制序列化 - 在这种情况下,直接序列化_status
成员。
对于所有其他/默认行为,只需序列化this
(这可以为整洁而继承)并返回它。
答案 1 :(得分:1)
我通过将ApiRequestStatus
切换为枚举并将Json.NET
序列化程序与JsonConverter
attribute结合使用来解决此问题,但我仍然有兴趣看看这是否可行JavaScriptSerializer
。