Generally, it seems best to put the inventory array into a component class which is added to the character or its controller. As for type, most people use a structure with members like ItemName and Quantity ( so you can do things like stack potions, arrows, or coins to one bag slot).
To setup item properties, data tables are usually used for this. Or an external database if you use an SQLite plugin or something. The inventory slot structure would just point at a row name (or row number with a normal database).
Done like this, you won’t really need hard refs in save, since you can just store the inventory array which is just made of names and ints.
And without refs, you just need the character or whatever to look up the item in the data table to set any meshes/textures/etc.. on begin play to change how they look.