2013-01-24 139 views
1

我正在使用Json.NET序列化一个对象发送到一个紧凑框架3.5设备(幸运我)。JsonConvert.DeserializeObject - 处理空字符串

我的紧凑型设备类:

public class Specification 
{ 
     public Guid Id { get; set; } 
     public String Name { get; set; } 
     public String Instructions { get; set; } 
} 

JSON的返回发送到设备(注意有关说明空):

string json = @"{""Name"":""Test"",""Instructions"":null,""Id"":""093a886b-8ed4-48f0-abac-013f917cfd6a""}"; 

...和方法的用于反序列化JSON是...

var result = JsonConvert.DeserializeObject<Specification>(json); 

在服务器上我使用以下命令来创建JSON:

var serializer = new JsonSerializer(); 
serializer.Formatting = Formatting.None; 
serializer.Serialize(context.HttpContext.Response.Output, this.Data); 

的问题是,在紧凑的框架,它的失败把一个值时,它后面的代码中引用这是造成空引用result.Instructions。

我正在使用Newtonsoft.Json.Compact v3.5.0.0(我认为这是最新版本),并在服务器上使用Newtonsoft.Json 4.5.0.0。

问题

如何,我不是:

一)修改服务器代码贴在一个字符串为空空值的“”来代替。

b)将紧凑框架代码更改为能够处理空值字符串。

事情我已经试过

我一直在寻找通过的文件/和Json.Net的例子已经试过千头万绪像实施DefaultContractResolver,和一个自定义JsonContract。也许答案在于那些,但是我对Json.Net在这个级别上的理解不够帮助!

更多信息

我用System.Runtime.Serialization.Json.DataContractJsonSerializer服务器端序列化,这并在空字符串时生成的报价。不幸的是,我需要更多的序列化灵活性,这就是为什么我开始使用Json.Net。

任何提示/技巧赞赏。

回答