Я пытаюсь установить базовую связь с контроллерами MVC4 через JSON.
Мне нужно отправлять и получать данные в обеих точках. Для клиента я использую RestSharp.
Моя проблема в том, что список TheObjectIWantToTransfer не имеет значений, когда он передается на сервер.
Вот почему я начал играть с Json.NET и на стороне контроллера.
Это пример класса, как выглядит материал, который я хочу передать.
public class TheObjectIWantToTransfer
{
public int JustAGeneralNumber { get; set; }
[JsonProperty(TypeNameHandling = TypeNameHandling.All)]
public List<MyBaseType> Data { get; set; }
public TheObjectIWantToTransfer()
{
Data = new List<MyBaseType>();
}
}
// class of the list
[KnownType(typeof(MyDerivedTypeA))]
[KnownType(typeof(MyDerivedTypeB))]
public abstract class MyBaseType
{
public string SomeGeneralStuff { get; set; }
}
public class MyDerivedTypeA : MyBaseType
{
public int Foo { get; set; }
}
public class MyDerivedTypeB : MyBaseType
{
public int Bar { get; set; }
public string IamYourFather { get; set; }
}
Я также пытался использовать
var settings = new JsonSerializerSettings()
{TypeNameHandling = TypeNameHandling.All};
с JsonConvert Сериализация / десериализация. Выход изменился, но у меня все еще не получилось. Он не смог найти ссылочные типы, и я понятия не имею, как получить
TypeNameHandling.All Json.NET Object в контроллере.
Я создал JsonNetResult, который дает мне возможность сериализовать с TypeNameHandling.All и отправлять данные клиенту. Но я не могу получить / десериализовать с Json.NET?
public JsonNetResult MyAction(MyClassType blub)
{
// blub ?? is beeing deserialized by the default JSON deserializer of MVC.
}
Мне просто нужно решение. Я был бы рад сохранить нормальный метод Json () в MVC, если это возможно.
Не могу поверить, что он не работает с производными типами в массиве. Должен быть какой-то атрибут или хак, чтобы активировать это.
Или я делаю что-то сумасшедшее на самом деле неправильно ..
Спасибо!