Как проверить ввод JSON в Go - PullRequest
1 голос
/ 30 мая 2019

Я использую Beego Framework для создания веб-приложения на Go. Я должен проверить входящий JSON в запросе API.

Я могу разархивировать JSON в структуру, которая прекрасно работает, но я также хочу проверить данные. Например, если тип не совпадает с типом в структуре json.Unmarshal, то при первом появлении будет возвращена ошибка. Я хочу проверить и получить все ошибки сразу для JSON.

Я пробовал https://github.com/thedevsaddam/govalidator, но пакету нужна ссылка на объект запроса, который недоступен в контроллере Beego. Существуют и другие валидаторы, которые могут проверять структуру, но я также хочу проверить json.

EDIT:

Ссылка на объект запроса в beego может быть найдена из объекта контекста контроллера как:

func (this *MainController) Post() {
    fmt.Println(this.Ctx.Request)
}

Но проблема остается той же самой с json unmarshal. Если в типе есть небольшое несоответствие, json.unmarshal немедленно запаникует. Я также хочу иметь возможность проверить тип.

1 Ответ

1 голос
/ 30 мая 2019

Мы использовали go-игровая площадка / validator.v8 для аналогичной цели. Вы можете определить валидацию данных с помощью тегов, которые выходят из коробки (базовые вещи, такие как равенство, мин / макс и даже что-то вроде выражения языка). Кроме того, вы можете добавить свои собственные проверки. Это все в документации, надеюсь, это поможет.

...