Ошибка "Неизвестный идентификатор" обычно возникает из-за того, что в строке json есть символ, который ParseJson()
не поддерживает. Причина, по которой работает ReadAsciiFile()
, вероятно, заключается в том, что функция «очищает» строку json, применяя кодировку UTF-8.
Общий символ, присутствующий в начале некоторых ответов JSON, который вызывает эта проблема - символ Unicode Метка порядка байтов (BOM)
Если вы Google "метка порядка байтов json" увидеть множество случаев, когда это влияет и на другие платформы.
Вы можете просто найти и заменить, чтобы избавиться от этого символа, прежде чем пытаться разобрать строку.
bomChar = Chr(65279)
if result.left(len(bomChar)) = bomChar ' Check if the string has the BOM char prefix
result = result.replace(bomChar, "")
end if
Если это не работает, тогда ваш ответ может иметь какой-то другой конфликтующий символ, в этом случае я бы посоветовал использовать ifUrlTransfer::AsyncGetToFile()
вместо AsyncGetToString()
, а затем использовать ReadAsciiFile()
, который должен гарантировать правильно отформатированный json строка каждый раз (при условии, что ваш json действителен).