initially i thought if it was one controller each function would be doing too much - i would have to constantly check which user it is and restrict etc...
But i am not so sure.. sometimes i think this looks messy :s
If the work being done in the various methods depending on the context (admin, client, json) is more than trivial, I would tend towards separating the Controllers as you have done.
The context is important and it can be good to know that whenever you are in a given controller, you know that this is Admin (or Client or Json).
If you are duplicating the same controller actions (including implementation) then consider a BaseUserController, and extend with Admin, Client, Json - this will allow you to override the actions that have specific implementation to that context.
If you can keep some functionality together I would. I use repositories for this. I have separated my User Controllers before and do it because it makes sense like @tykus said. However, my difference would be that I call them AdminController, ClientController and EmployeeController (using resourcecontroller here would be confusing since resource has a different meaning in laravel).