Я не верю, что одно решение универсально более правильно, чем другое. Я думаю, что более подходящее решение сильно зависит от контекста.
С учетом вышесказанного, по моему скромному мнению, хотя первое упомянутое вами решение требует большей обработки, оно также предлагает гораздо большую гибкость. JSON отлично подходит для представления иерархии данных и структуры. Если вы когда-нибудь хотели добавить больше данных или структуры, я считаю, что первое решение (с вложенным userInfo) будет обрабатывать переход более плавно.
Например, предположим, что вы хотите поддерживать информацию для нескольких пользователей, тогда единственное переключение, которое вам нужно сделать, - это чтобы userInfo содержал массив JSON из нескольких объектов userInfo. Чтобы продвинуться дальше, скажем, вы также хотели полностью включить новый набор данных, например locationInfo, вы бы получили выгоду от вложенной иерархии для разделения этих двух различных классов данных.
В конечном счете, я считаю, что правильное решение является наиболее подходящим для контекста вашего приложения, но я бы посоветовал вам заранее подумать о том, как вы подходите к своему дизайну, и попытаться предвидеть, как вы можете использовать эту реализацию будущее.
Просто пища для размышлений.
Удачи!