【问题标题】:JsonConvert.DeserializeObject - Handling Empty StringsJsonConvert.DeserializeObject - 处理空字符串
【发布时间】: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


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 2015-10-27
      • 1970-01-01
      • 2018-10-26
      • 2019-05-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-28
      • 1970-01-01
      相关资源
      最近更新 更多