As with blocks, items need models too.
{
"parent": "item/generated",
"textures": {
"layer0": "example:items/basic"
}
}
That's pretty much all that's needed for it to work once the item is registered. The only important thing is that the filename match the registry name used to register the block and should be in all lowercase (1.11+ file names are required to be lowercase, prior to that it is just case sensitive).
Note that "layer0" is the only texture needed and it is highly unlikely that any other texture will be specified at all (although some items like potions and leather armor do have a "layer1"). All names are defined by item/builtin
(the internal top-most parent model for items) unlike with blocks.
Name the model JSON file my_item.json
(matching the registry name we're going to give it later) and save it at src\main\resources\assets\example\models\item\
(where example
is the mod ID specified in the @Mod annotation of your main mod class).
Additionally create a texture for your item, name it basic.png
and save it to src\main\resources\assets\example\textures\items\
The item model here uses a parent of item/generated, which means that the single supplied texture will be used (as with most non-block items) and will be held in the player's hand in a default orientation. There is also item/handheld which specifies different display orientations (for tools). Items may also supply their own "display" attribute, overriding those from the parent, but is not needed in 99.9% of uses.