Я использую AdaptiveCards 1.2.4 от NuGet, и есть некоторые проблемы с десериализацией. Мне удалось детализировать и определить, откуда возникла ошибка, и сократить карту до двух наборов столбцов. Карта анализируется с ними отдельно, но не с обоими одновременно.
Exception.Message = "Current error context error is different to requested error."
Exception.StackTrace = " at
Newtonsoft.Json.Serialization.JsonSerializerInternalBase.GetErrorContext(Object currentObject, Object
member, String path, Exception error)
at Newtonsoft.Json.Serialization.JsonSerializerInternalBase.IsErrorHandled(Object currentObject, J
JsonContract contract, Object keyValue, IJsonLineInfo lineInfo, String path, Exception ex)
at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.Deserialize(JsonReader reader, Type
objectType, Boolean checkAdditionalContent)
at Newtonsoft.Json.JsonSerializer.DeserializeInternal(JsonReader reader, Type objectType)
at Newtonsoft.Json.JsonSerializer.Deserialize(JsonReader reader, Type objectType)
at Newtonsoft.Json.JsonConvert.DeserializeObject(String value, Type type, JsonSerializerSettings
settings)
at Newtonsoft.Json.JsonConvert.DeserializeObject[T](String value, JsonSerializerSettings settings)
at AdaptiveCards.AdaptiveCard.FromJson(String json)
at AdaptiveCardsDeserializationProblem.Program.Main(String[] args) in
C:\Work\Demo\AdaptiveCardsDeserializationProblem\AdaptiveCardsDeserializationProblem\Startup.cs:line
34"
Это пример кода, который показывает проблему.
try
{
var problematicCard = "{\"type\":\"AdaptiveCard\",\"body\":[{\"type\":\"ColumnSet\",\"spacing\":\"None\",\"columns\":[{\"type\":\"Column\",\"style\":\"default\",\"items\":[{\"type\":\"FactSet\"}],\"width\":\"stretch\"}]},{\"type\":\"ColumnSet\",\"spacing\":\"None\",\"columns\":[{\"type\":\"Column\",\"style\":\"default\",\"items\":[{\"type\":\"FactSet\"}],\"width\":\"stretch\"}]}],\"version\":\"1.0\"}";
var firstColumnSet = "{\"type\":\"AdaptiveCard\",\"body\":[{\"type\":\"ColumnSet\",\"spacing\":\"None\",\"columns\":[{\"type\":\"Column\",\"style\":\"default\",\"items\":[{\"type\":\"FactSet\"}],\"width\":\"stretch\"}]}],\"version\":\"1.0\"}";
var secondColumnSet = "{\"type\":\"AdaptiveCard\",\"body\":[{\"type\":\"ColumnSet\",\"spacing\":\"None\",\"columns\":[{\"type\":\"Column\",\"style\":\"default\",\"items\":[{\"type\":\"FactSet\"}],\"width\":\"stretch\"}]}],\"version\":\"1.0\"}";
var adaptiveCard = AdaptiveCard.FromJson(problematicCard);
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
throw;
}
Это карточка JSON -> https://pastebin.com/Ud4BZ33g
А вот так выглядит карта в конструкторе адаптивных карт
Похоже, что она кидает сюда .. https://github.com/JamesNK/Newtonsoft.Json/blob/master/Src/Newtonsoft.Json/Serialization/JsonSerializerInternalBase.cs#L103