Я столкнулся с проблемой, глядя на 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 внутренне лимитирует кавычки? Это правильный способ обработки члена json, который может быть одним из многих разных типов? Я действительно пробовал динамический материал, но мне тоже не повезло - в основном тот же результат с отсутствующими кавычками.
Я искал очень тщательно для использования объектов и динамических в DTO, но действительно ничего не помогло в этом вопросе.
Спасибо!
Я не могу воспроизвести вашу проблему. 'request.data._object.ToString()' является правильным JSON-объектом для меня. Помимо этого, это не очень хороший подход; вы должны проверить фактический тип 'object' и десериализовать его в первоклассную модель. –
Любые предложения о том, как это сделать? Значение «type» в StripeEvent указывает на это, и я собирался сделать оператор switch для анализа строки json в соответствующем классе. –
Конечно; то, что обрабатывает тип события 'invoice.updated', должно знать, что свойство' object' является 'Invoice' –