Ошибка api и числовые типы

  • Автор темы Автор темы ulan
  • Дата начала Дата начала

ulan

A-Parser Enterprise License
A-Parser Enterprise
У меня клиент на c# (строго с типами данных в отличие от пхп, питона и т.д.) и он падает при парсинге json ответа апи, когда неожиданно ожидаемые числовые значения приходят как строка "none".

Image 4.png

также замечено на "uniqueResultsCount"

Пусть он пишет вместо "none" -1 или 0 (что логически то же самое)
 
Туда же все ответы вида "число". Например getTasksList выдает список чисел, но как строки.
 
проверяйте возвращаемые типы, текущая версия API устоявшаяся и в ближайшее время изменений(кроме дополнений) не планируется
 
проверяйте возвращаемые типы

Это в динамических языках есть что-то вроде json_decode/json.loads, которые распарсят любой json в соотвествующий ему массив и потом уже можно будет разбираться что он там напарсил.
В языках со статической типизацией такое не проходит - парсер разбирает в json в нужную структуру (и падает на этом). Ну или добро пожаловать в "ручками разбирай"

текущая версия API устоявшаяся и в ближайшее время изменений(кроме дополнений) не планируется
Каких изменений api?????
Я прошу слать там где ожидаются числовые значения...числовые значения.
Собственно, там и так шлются числовые значения. Просто как строки (на что динамическим языкам плевать) или иногда не числа (как по мне это баг).

Разве что у вас
uniqueResultsCount: 0
логически отличается от
uniqueResultsCount: 'none'

А не просто забытая проверка и просачивание 'none' в вывод вместо логичного 0.

Ни один клиент из существующих не пострадает от того, что там где он ожидал число и делал дополнительные проверки на "а вдруг не число" будет приходить число и все эти проверки станут ненужными.
 
Обратите внимание на http://jsonapi.org - все числовые атрибуты берутся в кавычки.

Не "все числовые аттрибуты", а только id, который по своей природе не обязательно должен быть числом и поэтому jsonapi, как общий стандарт, это предусматривает.
 
Последнее редактирование:
Обратите внимание на http://jsonapi.org - все числовые атрибуты берутся в кавычки.

Вот 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

В языках со статической типизацией такое не проходит

поэтому данное утверждение - ложь
 
в .Net есть множество способов работать с динамичным JSON https://stackoverflow.com/questions...son-object-into-dynamic-object-using-json-net
Ну да. Это если вы еще ничего не написали и собираетесь выбрать json.net. А если уже написали и выбран другой сериализатор...

поэтому данное утверждение - ложь
Вы бы были более внимательнее к тому, какие слова вы ложью называете.

Тему можно закрывать. Причины, по которым ничего не изменится, мне ясны.
 
Назад
Верх