【发布时间】:2012-02-17 15:27:37
【问题描述】:
我有以下课程
[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>。
例如当我返回并清空 IDictionary<string, object> 时,我的对象显示为一个空的 JavaScript 对象:{ }。
如果我返回 new Dictionary<string, object> { {"_status", status._status}},我的对象将显示为 { "_status" : "Success" }。
如何将对象序列化为 _status 字段的字符串值?
【问题讨论】:
-
不能说它是否有效,但您可以尝试使用“public static implicit operator string(ApiRequestStatus apiRs) { return apiRs._status }”。这至少应该使您能够执行“string s = apiRequestStatusObj;”然后“s”应该包含状态。 (隐式运算符应该在你的类中)
-
@Joakim 不幸的是没有任何效果。干杯
标签: javascript asp.net json asp.net-mvc-3 serialization