Json.Encode()是否使用JavaScriptSerializer类进行序列化

时间:2013-01-25 02:05:47

标签: c# json razor javascriptserializer

Json.Encode() Helper是否使用JavaScriptSerializer类将字符串编码为json?

使用Json.Encode(Model)时,我收到循环引用异常,即使我的序列化类属性具有[ScriptIgnore]属性。

我唯一的猜测是,Json.Encode()帮助器可能不会使用JavaScriptSerializer序列化为json,但我无法在msdn上的任何地方找到文档。

@Html.Raw(Json.Encode(Model))

以下是其中一个具有不应序列化的属性的模型示例...

using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using System.Web.Script.Serialization;

namespace RobotDog.Entities {
    public class Character {
        [Key]
        [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
        public int Id { get; set; }

        [MaxLength(200)]
        public string Name { get; set; }

        public virtual Person Person { get; set; }

        [ScriptIgnore]
        public virtual Movie Movie { get; set; }
    }
}

2 个答案:

答案 0 :(得分:6)

  

Json.Encode()Helper是否使用JavaScriptSerializer类将字符串编码为json?

来自源代码:

private static readonly JavaScriptSerializer _serializer = Json.CreateSerializer();

public static string Encode(object value)
{
  DynamicJsonArray dynamicJsonArray = value as DynamicJsonArray;
  if (dynamicJsonArray != null)
    return Json._serializer.Serialize((object) (object[]) dynamicJsonArray);
  else
    return Json._serializer.Serialize(value);
}

其中JavaScriptSerializerSystem.Web.Script.Serialization.JavaScriptSerializer

也可以帮助您解决问题,请参阅this thread

答案 1 :(得分:0)

http://msdn.microsoft.com/en-us/library/system.web.helpers.json.encode(v=vs.111).aspx

根据上面的链接Json.Encode使用system.web.helpers。

您的模型包含哪些内容?

另外,您确定[ScriptIgnore]会忽略您分配给它的内容吗?