我正在使用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的原因。
任何提示/提示表示赞赏。