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 に値を入れることができず、コード内で後で参照されるときに null 参照が発生することです。
私は Newtonsoft.Json.Compact v3.5.0.0 (最新バージョンだと思います) を使用しており、サーバーでは Newtonsoft.Json 4.5.0.0 を使用しています。
質問
どうすればよいですか:
a) サーバー コードを変更して、文字列が null の場合に null 値の代わりに "" を貼り付けます。
また
b) コンパクト フレームワーク コードを変更して、NULL 値の文字列を処理できるようにします。
私が試したこと
私は Json.Net のドキュメント/例に目を通しDefaultContractResolver
、 やカスタムの実装など、さまざまなことを試しましたJsonContract
。多分答えはそれらの中にありますが、このレベルでのJson.Netの理解の欠如は役に立ちません!!
詳細情報
サーバー側のシリアル化に System.Runtime.Serialization.Json.DataContractJsonSerializer を使用していましたが、空の文字列の場合に引用符が生成されました。残念ながら、Json.Net の使用を開始した理由は、シリアライゼーションにもっと柔軟性が必要なことです。
ヒント/ヒントをいただければ幸いです。