MVC3 JSON序列化:如何控制属性名称?

MVC3 JSON序列化:如何控制属性名称?,第1张

MVC3 JSON序列化:如何控制属性名称?

我通过使用此问题答案中提供的技术解决了这个问题:

这是我上的课:

/// <summary>/// Similiar to <see cref="JsonResult"/>, with/// the exception that the <see cref="DataContract"/> attributes are/// respected./// </summary>/// <remarks>/// based on the excellent stackoverflow answer:/// https://stackoverflow.com/a/263416/1039947/// </remarks>public class JsonDataContractActionResult : ActionResult{    /// <summary>    /// Initializes a new instance of the class.    /// </summary>    /// <param name="data">Data to parse.</param>    public JsonDataContractActionResult(Object data)    {        Data = data;    }    /// <summary>    /// Gets or sets the data.    /// </summary>    public Object Data { get; private set; }    /// <summary>    /// Enables processing of the result of an action method by a     /// custom type that inherits from the ActionResult class.     /// </summary>    /// <param name="context">The controller context.</param>    public override void ExecuteResult(ControllerContext context)    {        if (context == null) throw new ArgumentNullException("context");        var serializer = new DataContractJsonSerializer(Data.GetType());        string output;        using (var ms = new MemoryStream())        { serializer.WriteObject(ms, Data); output = Encoding.UTF8.GetString(ms.ToArray());        }        context.HttpContext.Response.ContentType = "application/json";        context.HttpContext.Response.Write(output);    }}

用法

    public ActionResult TestFunction()    {        var testObject = new TestClass();        return new JsonDataContractActionResult(testObject);    }

我还必须修改初始类:

// -- The DataContract property was added --[DataContract]public class JsonTreeNode{    [DataMember(Name = "title")]    public string Title { get; set; }    [DataMember(Name = "isFolder")]    public bool IsFolder { get; set; }    [DataMember(Name = "key")]    public string Key { get; set; }    [DataMember(Name = "children")]    public IEnumerable<JsonTreeNode> Children { get; set; }    [DataMember(Name = "select")]    public bool SelectedonInit { get; set; }}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5642581.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-16
下一篇 2022-12-16

发表评论

登录后才能评论

评论列表(0条)

保存