現在、次のコンストラクターを使用しています。
var text = JsonConvert.SerializeObject(message, new IsoDateTimeConverter());
私たちが直面している問題は、json が異なる順序でシリアル化されることがあるということです。これにより、テストとハッシュ チェックで問題が発生します。顧客設定を使用してプロパティを注文できる例を見つけました
public class OrderedContractResolver : DefaultContractResolver
{
protected override System.Collections.Generic.IList<JsonProperty> CreateProperties(System.Type type, MemberSerialization memberSerialization)
{
return base.CreateProperties(type, memberSerialization).OrderBy(p => p.PropertyName).ToList();
}
}
通常は JsonSerializationSettings オブジェクトを初期化してこれを使用し、次のようにコンストラクターに渡します。
var settings = new JsonSerializerSettings()
{
ContractResolver = new OrderedContractResolver()
};
var json = JsonConvert.SerializeObject(obj, Formatting.Indented, settings);
これの問題は、コンバーターと設定パラメーターを使用するコンストラクターのオーバーロードが表示されないことです。両方を使用する方法はありますか?