Casper-SC
@Casper-SC
Программист (.NET)

Существует ли в JavaScript способ валидировать формат пришедшего JSON?

Например, в React есть возможность описать формат пропсов (props) с помощью библиотеки PropType.
SomeComponent.propTypes = {
    searchState: PropTypes.oneOf([
        SEARCH_STATE_MAIN,
        SEARCH_STATE_TYPE1,
        SEARCH_STATE_TYPE2,
        SEARCH_STATE_TYPE3,
        SEARCH_STATE_SEARCH_RESULTS]).isRequired,
    title: PropTypes.string.isRequired,
    description: PropTypes.string,
    items: PropTypes.arrayOf(PropTypes.object),
    serverApi: PropTypes.instanceOf(ServerApi),
    onUpdateState: PropTypes.func.isRequired,
};


А можно ли как-то проверять JSON? Это нужно, чтобы в случае прихода невалидных данных я мог на самом раннем этапе бросить эксепшен, а не узнать об ошибке где-то далеко в компонентах.
  • Вопрос задан
  • 93 просмотра
Пригласить эксперта
Ответы на вопрос 2
bitniks
@bitniks
Go/PHP/Symfony developer
У JSON Schema есть реализации на JavaScript
https://json-schema.org/implementations.html#valid...
Ответ написан
Комментировать
zkrvndm
@zkrvndm
Архитектор решений
Если данные не валидны, при парсинге должно выдать ошибку. По идее можно попробовать парсер запихнуть в Boolean() и уже на его результаты смотреть. Однако, как оно будет на практике ХЗ, сейчас не у компа, проверить не могу.

Попробуйте натурный эксперимент сделать, запишите в переменную строку с кривым json и попробуйте его считать:
ttt = JSON.parse(test); // Так
vvv = Boolean(JSON.parse(test)); // И вот так
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы