1. Можно всегда из триады возвращать массив данных. И уже в случае отдачи их клиенту - кодировать в JSON.
2. Состояние пользователя должно оставаться постоянным в течении всего запроса, если его не изменяли в коде. По этому это состояние должно хранится в своего рода обертке приложения, а доступ к ней должен быть у любой триады, так как вызов этой триады будет идти через эту обертку.
Это приблизительно. На самом деле вопросы весьма творческие)