8

文字列と long を含むオブジェクト配列と、このクラスがあります。

public class SimpleMailAddress
{
    public string Address { get; set; }
    public string Name { get; set; }

    public static implicit operator MailAddress(SimpleMailAddress m)
    {
        return new MailAddress(m.Address, m.Name);
    }
}

ただし、Json.Net を使用して JSON 配列を逆シリアル化すると、オブジェクトの代わりにAddressandを含む匿名型が取得されます。NameSimpleMailAddress

逆シリアル化するために厳密に型指定されたオブジェクトを作成したくありません。これは、再利用されず、そのために多くのオブジェクトを作成する必要があるためです。Json.Net または他のライブラリでこれを行う方法はありますか?

これは私がシリアル化/逆シリアル化する方法です:

var json = JsonConvert.SerializeObject(myObject);
var myObject = JsonConvert.DeserializeObject<MailMessageRequest>(json);

そしてMailMessageRequest

public class MailMessageRequest
{
    public string Mailer { get; set; }
    public string Method { get; set; }
    public object[] Args { get; set; }
}
4

3 に答える 3

0

とった。これらの設定を使用する必要があります。

var settings = new JsonSerializerSettings
               {
                   TypeNameHandling = TypeNameHandling.All,
                   TypeNameAssemblyFormat = FormatterAssemblyStyle.Full
               };
var json = JsonConvert.SerializeObject(object, Formatting.None, settings);
var object = JsonConvert.DeserializeObject<MailMessageRequest>(message.Body, settings);
于 2013-05-26T17:33:27.767 に答える
0

.net フレームワークに組み込まれているデータ コンタクト シリアライザーには既知の型の概念があり、期待する型を指定し、逆シリアル化中にそれらを使用します。

Json データ コントラクト シリアライザーが組み込まれていますが、Json データと互換性があるかどうかはわかりません。このメソッドを使用するには、datacontract シリアライザーを介してシリアライズおよびデシリアライズする必要がある場合があります。

于 2013-05-25T17:27:54.310 に答える