1

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 の使用を開始した理由は、シリアライゼーションにもっと柔軟性が必要なことです。

ヒント/ヒントをいただければ幸いです。

4

1 に答える 1

2

わかりました-答えはありませんが、昨日の午後ずっと検索して寝て、今朝もう一度検索して見つける: Serializing null in JSON.NET、私の質問にほとんど答えます。

于 2013-01-25T10:56:34.783 に答える