5

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; }
    }
}
4

2 回答 2

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);
}

JavaScriptSerializer在哪里System.Web.Script.Serialization.JavaScriptSerializer

也可以帮助您解决问题,请参阅此线程

于 2013-01-26T05:45:09.543 回答
0

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

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

你的模型包含什么?

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

于 2013-01-25T02:53:47.810 回答