我正在使用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。
任何提示/技巧赞赏。