In theory JSON Schema could serve this purpose, but in practice I am not sure it does. Worth mentioning I hope.
Other than this, my personal opinion is that since JSON is predominantly used for transferring objects, documenting equivalent objects in language client uses (Java, C#, various scripting languages) may make most sense — after all, such objects usually are mapped/bound to JSON and back. And then you can use whatever documentation tools are available, like Javadoc for Java (perldoc for Perl, Oxygen for c++ etc etc).
For specifying interfaces there is also WADL (Web App Description Language), which might help.