2012-06-15 37 views
9

好吧 - 现在几个小时,我一直在殴打我的头。有时间寻求帮助。Newtonsoft json序列化程序返回空对象

我刚刚将我的Web应用程序项目升级到ASP.NET MVC 4 RC和新的WebApi。 我的web api方法现在正在返回EMPTY json“{}” - 即使我的对象已完全填充。

我用我自己的MediaTypeFormatter替换了序列化程序,该程序也调用了Newtonsoft Json序列化程序,这样我就可以挂接并查看正常工作。 我看到的是一个进入序列化器的对象,并以“{}”出现。

这用于升级之前工作。

这是我的目标

[Serializable] 
public class Parameters 
{ 
    public string ApplicantName { get; set; } 
} 

,我只是呼吁:

var result = JsonConvert.SerializeObject(new Parameters(){ Name = "test" }); 

我回来

"{}" 

回事请告诉我?

[编辑]

别人有同样的问题......通过Newtonsoft源代码运行后,我可以看到我们从最近的变化具有完全相同的问题。

http://json.codeplex.com/discussions/357850

回答

5

好了 - 已经有不少的变化,结果是到JSON输出一些非常激进的变化。这些更改还包括如何应用自定义TypeConverters。

我写了一个基本的解析器实现了(至少对我们来说)会导致Newtonsoft串行的行为更像是一个基本的序列化对象序列化 - 即串行化的所有属性,以及犯规的使用习惯类型转换器...

/// <summary> 
/// A resolver that will serialize all properties, and ignore custom TypeConverter attributes. 
/// </summary> 
public class SerializableContractResolver : Newtonsoft.Json.Serialization.DefaultContractResolver 
{ 
    protected override IList<Newtonsoft.Json.Serialization.JsonProperty> CreateProperties(Type type, MemberSerialization memberSerialization) 
    { 
     var properties = base.CreateProperties(type, memberSerialization); 

     foreach (var p in properties) 
      p.Ignored = false; 

     return properties; 
    } 

    protected override Newtonsoft.Json.Serialization.JsonContract CreateContract(Type objectType) 
    { 
     var contract = base.CreateContract(objectType); 

     if (contract is Newtonsoft.Json.Serialization.JsonStringContract) 
      return CreateObjectContract(objectType); 
     return contract; 
    } 
} 

*登记* 在你MvcApplication“的Application_Start” ......

GlobalConfiguration.Configuration.Formatters 
    .JsonFormatter.SerializerSettings.ContractResolver = 
     new SerializableContractResolver() 
     { 
      IgnoreSerializableAttribute = true 
     }; 
+0

谢谢你,这个答案帮我解决办法我JSON.NET串行的问题不序列化公共恰好有一个空字符串值的字符串属性.....我需要它们包含在生成的JSON中,因为javascript期望属性存在 – 2012-09-07 14:21:26

+0

我应该怎么做? –

+1

发布更新了注册详细信息。 – Adam

相关问题