SSを見ているうちに問題が発生しています。ServiceStack - DTOの動的/オブジェクト
私は、カスタムのストライプの実装を書いていますし、ウェブフックに捕まってしまった、この特に: https://stripe.com/docs/api#event_object
データ - >オブジェクトを - これは何もすることができます。ここで
は、それは私のDTOです:
public class StripeEvent
{
public string id { get; set; }
public StripeEventData data { get; set; }
public string type { get; set; }
}
[DataContract]
public class StripeEventData
{
[DataMember(Name = "object")]
public object _object { get; set; }
}
私の希望は、基本的には単なる文字列としてそのオブジェクトを取得し、それを解析することです:
var invoice = (StripeInvoice)JsonSerializer.DeserializeFromString<StripeInvoice>(request.data._object.ToString());
あいにくから返されたデータToStringには、各jsonプロパティの名前を囲む引用符はありません。
したがって、DeserializeFromStringは、すべてがゼロになっているオブジェクトを返します。
なぜSSは内部で引用符を取り除いていますか?これは、さまざまな種類のうちの1つになることができるjsonメンバーを処理する適切な方法ですか?私は動的なものを試してみましたが、どちらにも幸運がありませんでした - 基本的に引用符がない場合と同じ結果です。
私は、DTO内でオブジェクトとダイナミックの使用について非常に徹底的に調査しましたが、実際にこの質問に役立つものはありませんでした。
ありがとうございました!
私はあなたの問題を再現することはできません。 'request.data._object.ToString()'は私にとっては適切なJSONオブジェクトです。それとは別に、これは良いアプローチではありません。 'object'の実際の型をチェックし、それを第一級モデルに逆直列化する必要があります。 –
これを行う方法に関する提案はありますか? StripeEventの "type"値はこれを示しており、json文字列をそれぞれのクラスに解析するswitch文を作成しようとしていました。 –
確か; 'invoice.updated'イベントタイプを扱っているものは、' object'プロパティが 'Invoice'であることを知るべきです –