I found it pretty tedious to make tons of JSON files when making simple new blocks and items. Therefore, I made a snippet of Groovy code you can add to build.gradle in your project that will let you automatically generate default JSON files for blocks and items. I documented the procedure of making this script here. It's part of an ongoing documentation of converting Gases Framework from 1.7.10 to 1.9.4.
Generating JSON for an item: Open a command prompt in your project root directory and run the following
./gradlew generateItemModel itemName=item_name
item_name: the registry name of your item. The script also assumes this is the name of a texture that will be used for the item.
The following files will be created with default content, and will also override any existing files.
I also find making the json files tedious. However, one disadvantage of doing this at build-time is that you are just going to see the black/purple null texture when running in the dev enviornment. So if you forgot to write the Minecraft.getMinecraft().getRenderItem().getItemModelMesher().register(...) or ModelLoader.setCustomModelResourceLocation(...) you may not know until after you build and run outside the dev enviornment.
So I don't have that problem, I plan on writing code to generate all the json files at run-time, like I have done with the en_us.lang file. It just requires you creating a default folder resource pack that can be read by minecraft (requires reflection as Minecraft.defaultResourcePacks field is private) and using basic java.io classes. However, a problem of doing this at run-time is that the mod will take longer to load.