C# Json反序列化EF和RIA服务的问题
我有个奇怪的问题。我将WCF RIA与实体框架结合使用。我已经实现了一个通用搜索功能,它依赖于将结果实体作为C# Json反序列化EF和RIA服务的问题,c#,entity-framework,ria,json.net,C#,Entity Framework,Ria,Json.net,我有个奇怪的问题。我将WCF RIA与实体框架结合使用。我已经实现了一个通用搜索功能,它依赖于将结果实体作为字节[](输入Json.Net)发回,并且我能够绕过RIA的强类型性的各种限制。但是当我在客户端反序列化时,我的对象没有正确组装。现在我说的是什么意思 从技术上讲,json是一个字符串,由我转换为byte[],然后返回到客户端,包含我需要的相关实体信息。所以让我们假设这个实体叫做Account,它有一个关联的Person对象。json字符串,甚至是反序列化的jobject,都有这个Pers
字节[]
(输入Json.Net)发回,并且我能够绕过RIA的强类型性的各种限制。但是当我在客户端反序列化时,我的对象没有正确组装。现在我说的是什么意思
从技术上讲,json是一个字符串,由我转换为byte[]
,然后返回到客户端,包含我需要的相关实体信息。所以让我们假设这个实体叫做Account,它有一个关联的Person对象。json字符串,甚至是反序列化的jobject,都有这个Person对象及其详细信息。但是,当我像JsonConvert.DeserializeObject(jdata,settings)
那样反序列化时,Person为空,没有错误
我正在尝试的设置如下:
settings = new JsonSerializerSettings()
{
//CheckAdditionalContent = true,
PreserveReferencesHandling = PreserveReferencesHandling.All,
//ReferenceLoopHandling = ReferenceLoopHandling.Serialize
NullValueHandling = NullValueHandling.Ignore,
DefaultValueHandling = DefaultValueHandling.Ignore,
ObjectCreationHandling = ObjectCreationHandling.Replace,
TypeNameHandling = TypeNameHandling.Auto
};
有什么想法吗?好的,想好了-所以在反序列化之前,我将下面的解析器附加到我的设置中,比如
settings.ContractResolver=new DynamicContractResolver()代码>
现在Json中的所有内容都完全反序列化到对象中。我不知道为什么这不是默认行为
public class DynamicContractResolver : DefaultContractResolver
{
protected override JsonProperty CreateProperty(System.Reflection.MemberInfo member, MemberSerialization memberSerialization)
{
var r = base.CreateProperty(member, memberSerialization);
r.Ignored = false;
return r;
}
}