#c# #json #rest
#c# #json #отдых
Вопрос:
У меня проблема с правильным синтаксическим анализом объекта из json-запроса. Я кое-что читал о JObject. Теперь у меня есть две модели, например, такие, как Car
и MotorBike
. Результатом запроса является:
"Vehicles":
[
{
"Id": 1,
"title": "test",
"price": "4000",
"type": "Car"
},
{
"Id": 1,
"title": "test",
"price": "4000",
"drivingLicenseCat" "A",
"type": "MotorBike"
}
]
как я могу выполнить синтаксический анализ для пользовательской модели с помощью type
Комментарии:
1. Отправленный JSON имеет только один тип:
Vehicle
with (sub)Type
является простым свойствомVehicle
2. подготовьте свою модель, соответствующую каждому элементу в массиве, проанализируйте список таких элементов. наконец, отфильтруйте элементы нужного типа. Я не вижу смысла пытаться анализировать только элементы некоторого желаемого типа. Сначала проанализируйте все и отфильтруйте нужные элементы (по типу).
Ответ №1:
Насколько у вас есть контроль над JSON? Если вы правильно генерируете JSON, скажем, из веб-api, он будет выглядеть примерно так:
"Vehicles":
[
{
"Id": 1,
"title": "test",
"price": "4000",
"$type": "YourNamespace.Car, YourNamespace"
},
{
"Id": 1,
"title": "test",
"price": "4000",
"drivingLicenseCat" "A",
"$type": "YourNamespace.MotorBike, YourNamespace"
}
]
и тогда он будет автоматически десериализован, когда вы его введете…
Убедитесь, что в модели, которую вы сериализуете и отправляете в формате JSON, вы пометили ее следующим образом:
[JsonProperty(ItemTypeNameHandling = TypeNameHandling.All)]
Это добавит имена типов к объектам по мере их сериализации. Я должен также отметить, что это связано с Newtonsoft в качестве вашей библиотеки Json. Я не уверен насчет встроенного Json.