相关疑难解决方法(0)

.NET 4有内置的JSON序列化器/解串器吗?

.NET 4是否附带任何序列化/反序列化JSON数据的类?

  • 我知道有第三方库,比如JSON.NET,但我正在寻找内置于.NET中的东西.

  • 我在MSDN上找到了数据合约,但它适用于WCF,而不适用于Winforms或WPF.

.net serialization json jsonserializer

59
推荐指数
3
解决办法
6万
查看次数

在将Entity Framework对象图序列化为Json时防止StackOverflowException

我想将一个实体框架自我跟踪实体完整对象图(一对多关系中的父/子)序列化为Json.

为了序列化我使用ServiceStack.JsonSerializer.

这就是我的数据库的样子(为简单起见,我删除了所有不相关的字段):

ERD

我以这种方式获取完整的个人资料图:

public Profile GetUserProfile(Guid userID)
{
    using (var db = new AcmeEntities())
    {
        return db.Profiles.Include("ProfileImages").Single(p => p.UserId == userId);
    }
}
Run Code Online (Sandbox Code Playgroud)

问题是尝试序列化它:

Profile profile = GetUserProfile(userId);
ServiceStack.JsonSerializer.SerializeToString(profile);
Run Code Online (Sandbox Code Playgroud)

生产一个StackOverflowException.我相信这是因为EF提供了一个无限模型,可以将串行器拧紧.也就是说,我可以称之为:profile.ProfileImages[0].Profile.ProfileImages[0].Profile ...等等.

如何"展平"我的EF对象图或以其他方式阻止ServiceStack.JsonSerializer进入堆栈溢出情况?

注意:我不想将我的对象投射到匿名类型(如这些 建议),因为这会引入一个非常长且难以维护的代码片段).

jsonserializer entity-framework-4 self-tracking-entities c#-4.0 servicestack

4
推荐指数
2
解决办法
1万
查看次数