На одном уровне будет выглядеть, конечно, проще:
{
"id": 1,
"author_id": 2,
"author_name": "Vasya",
// more data
}
Но вообще зависит от количества и качества данных. Каждый решает для себя, но лично я думаю, что где-то не более 20 пар ключ-значение на уровень это удобно. То есть если у вас, скажем, 100 пар, то их уже можно раскидывать по категориям.
Или, скажем, если одно из полей является массивом - тогда сам бог велел. Например, так:
{
"id": 1,
"authors": [
{ "id": 2, "name": "Vasya" },
{ "id": 3, "name": "Petya" },
],
// more nested entities
}