JsonConvert.DeserializeObject - 处理空字符串

时间:2013-01-24 14:05:08

标签: serialization compact-framework json.net deserialization

我正在使用Json.NET来序列化要发送到紧凑框架3.5设备的对象(幸运的是)。

我在紧凑型设备上的课程是:

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

返回发送到设备的Json是(请注意null以获取指示):

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。< / p>

问题

我怎么能:

a)更改服务器代码以粘贴&#34;&#34;而不是字符串为空的空值。

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

我尝试过的事情

我一直在查看Json.Net的文档/示例,并尝试了很多内容,例如实现DefaultContractResolver和自定义JsonContract。也许答案就在那些答案中,但我在这个层面对Json.Net缺乏了解并没有帮助!!

更多信息

我正在使用System.Runtime.Serialization.Json.DataContractJsonSerializer进行服务器端序列化,这在空字符串的情况下生成了引号。不幸的是,我需要更多的序列化灵活性,这就是我开始使用Json.Net的原因。

任何提示/提示表示赞赏。

1 个答案:

答案 0 :(得分:2)

好的 - 没有答案,但昨天下午我一直在搜索,我上床睡觉,今天早上再次搜索:Serializing null in JSON.NET,这几乎可以回答我的问题。