在JSON中序列化ASP.NET MVC模型

时间:2012-12-04 07:36:07

标签: c# asp.net-mvc json json.net

我有这样的模型

public class Category : BaseFieldsTables
{
        public ICollection<Category> Categories { get; set; }
        public Category Parent { get; set; }
        public int? ParentId { get; set; }
}

我想将模型序列化为json,这是我的控制器

    var categories =
            _efCategory.List().ToList().
                ToList().
                Select(x => new {id = x.Id, title = x.Name, children = x.Parent});

        string output = JsonConvert.SerializeObject(categories, Formatting.Indented,
                                                    new JsonSerializerSettings
                                                        {
                                                            PreserveReferencesHandling = PreserveReferencesHandling.Objects
                                                        });

        return Json(output.Replace, JsonRequestBehavior.AllowGet);

但我得到了这个结果

    "[\r\n  {\r\n    \"$id\": \"1\",\r\n    \"id\": 1,\r\n    \"title\": \"News\",\r\n    \"children\": null\r\n  },\r\n  {\r\n    \"$id\": \"2\",\r\n    \"id\": 2,\r\n    \"title\": \"2012\",\r\n    \"children\":
 {\r\n      \"$id\": \"3\",\r\n      \"Categories\": [\r\n        {\r\n          \"$id\": 

1 个答案:

答案 0 :(得分:0)

这很正常。您所看到的只是字符串的转义版本(可能直接在Visual Studio中)。 \r\n相当于换行符,\"只是逃避"的一种方法。输出后,这应该是正常的。