У меня клиент на c# (строго с типами данных в отличие от пхп, питона и т.д.) и он падает при парсинге json ответа апи, когда неожиданно ожидаемые числовые значения приходят как строка "none". также замечено на "uniqueResultsCount" Пусть он пишет вместо "none" -1 или 0 (что логически то же самое)
проверяйте возвращаемые типы, текущая версия API устоявшаяся и в ближайшее время изменений(кроме дополнений) не планируется
Это в динамических языках есть что-то вроде json_decode/json.loads, которые распарсят любой json в соотвествующий ему массив и потом уже можно будет разбираться что он там напарсил. В языках со статической типизацией такое не проходит - парсер разбирает в json в нужную структуру (и падает на этом). Ну или добро пожаловать в "ручками разбирай" Каких изменений api????? Я прошу слать там где ожидаются числовые значения...числовые значения. Собственно, там и так шлются числовые значения. Просто как строки (на что динамическим языкам плевать) или иногда не числа (как по мне это баг). Разве что у вас uniqueResultsCount: 0 логически отличается от uniqueResultsCount: 'none' А не просто забытая проверка и просачивание 'none' в вывод вместо логичного 0. Ни один клиент из существующих не пострадает от того, что там где он ожидал число и делал дополнительные проверки на "а вдруг не число" будет приходить число и все эти проверки станут ненужными.
Не "все числовые аттрибуты", а только id, который по своей природе не обязательно должен быть числом и поэтому jsonapi, как общий стандарт, это предусматривает.
Вот https://a-parser.com/wiki/user-api/#gettaskstate Все намешано runTime: 137, <-- число uniqueResultsCount: 'none', <-- строка и не число requests: '54', <-- строковое число при этом requests: 0 <-- число То есть значение может быть число/строка-число/не число php и ко это фиолетово, а вот в строгих языках это приводит к ошибке разбора. Как по мне, там должны быть все числа (стандарт json). Но даже если "числа в кавычках", то всегда числа в кавычках, а "не число" там вообще не должно быть - 'none' чем не 0?! и почему бы не писать законный 0 вместо него?!
потому что 'none' в данном контексте означает что уникализация не включена в .Net есть множество способов работать с динамичным JSON https://stackoverflow.com/questions...son-object-into-dynamic-object-using-json-net поэтому данное утверждение - ложь
Ну да. Это если вы еще ничего не написали и собираетесь выбрать json.net. А если уже написали и выбран другой сериализатор... Вы бы были более внимательнее к тому, какие слова вы ложью называете. Тему можно закрывать. Причины, по которым ничего не изменится, мне ясны.