【发布时间】:2013-01-24 14:05:07
【问题描述】:
我正在使用 Json.NET 序列化要发送到 compact framework 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。
问题
我该怎么做:
a) 更改服务器代码,在字符串为空的地方粘贴“”而不是空值。
或
b) 更改紧凑的框架代码,使其能够处理空值字符串。
我尝试过的事情
我一直在查看 Json.Net 的文档/示例,并尝试了很多方法,例如实现 DefaultContractResolver 和自定义 JsonContract。也许答案就在其中,但我在这个级别上对 Json.Net 缺乏了解并没有帮助!!
更多信息
我使用 System.Runtime.Serialization.Json.DataContractJsonSerializer 进行服务器端序列化,它确实在空字符串的情况下生成引号。不幸的是,我需要更多的序列化灵活性,这就是我开始使用 Json.Net 的原因。
任何提示/提示表示赞赏。
【问题讨论】:
标签: serialization compact-framework json.net deserialization