在ASP.NET MVC中将类序列化为单个JSON字符串

时间:2012-01-24 11:18:05

标签: javascript asp.net json asp.net-mvc-3 serialization

我有以下课程

[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字段的字符串值?

2 个答案:

答案 0 :(得分:1)

在您的班级中添加ToJsonString()方法,并手动控制序列化 - 在这种情况下,直接序列化_status成员。

对于所有其他/默认行为,只需序列化this(这可以为整洁而继承)并返回它。

答案 1 :(得分:1)

我通过将ApiRequestStatus切换为枚举并将Json.NET序列化程序与JsonConverter attribute结合使用来解决此问题,但我仍然有兴趣看看这是否可行JavaScriptSerializer