JSON bonito para humanos

Se você estiver construindo uma API da web que retorna JSON, mostre a seus desenvolvedores que você se importa, aprimorando a saída se você suspeitar que eles são humanos:

pretty = !(user_agent_string !~ /(^(curl|Wget)|b(Safari|Firefox))b/)
extra_newline
= pretty ? "n" : ""

encode_json
(obj, :pretty => pretty) + extra_newline
{
"login": "github",
"id": 9919,
"url": "https://api.github.com/orgs/github",
"repos_url": "https://api.github.com/orgs/github/repos",
"events_url": "https://api.github.com/orgs/github/events",
"members_url": "https://api.github.com/orgs/github/members{/member}",
"public_members_url": "https://api.github.com/orgs/github/public_members{/member}",
"avatar_url": "https://secure.gravatar.com/avatar/61024896f291303615bcd4f7a0dcfb74?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-org-420.png",
"name": "GitHub",
"company": null,
"blog": "https://github.com/about",
"location": "San Francisco, CA",
"email": "support@github.com",
"public_repos": 100,
"public_gists": 0,
"followers": 12,
"following": 0,
"html_url": "https://github.com/github",
"created_at": "2008-05-11T04:37:31Z",
"updated_at": "2013-07-22T21:42:06Z",
"type": "Organization"
}

São as pequenas coisas.

** Atualização **

I <3 JSONView, mas nem todas as solicitações são amigáveis ​​ao navegador, especialmente quando OAuth e tipos de mídia personalizados estão envolvidos.

Eu também abuso jq, grc python -mjson.toole similares.

Dar suporte à API diariamente, no entanto, me fez entender que nem todo mundo é um profissional de linha de comando, está familiarizado com pipes ou está atualizado sobre as ferramentas mais recentes.

Apenas um pequeno esforço do lado do servidor pode melhorar a relação sinal-ruído para os recém-chegados. E isso é bom.