How to Save movable and dynamic objects?

Okay this seems like an easy question, and may very well be. Basically I will be constructing levels and big worlds for my game and flagging certain objects as “savable” meaning that the player can interact and manipulate them some how. This could mean that the player picks up a copy of that item, or drops a new item into the world.

I want to emphasize that the player picks up a copy, every pickup object in the game will use a spawn object if placed within the level by a designer, but will be given a unique identifier while in that level. After a certain amount of game time passes these spawners respawn the items that have been picked up. If the player drops an item it is the item itself not the spawner. When the player leaves the level, a copy of all the updated data is saved to a file and loaded when the map is reloaded. When the player enters the level again I want the saved data to load and update the state of all these objects that the player dropped or picked up.

Again this is where the silly and simple answer may come from. My assumption is that within UE4 a “list” of all the items in the game put there by a level designer is kept. I can iterate through that list using an index. This list of items never changes unless I the designer goes in and changes the world explicitly. Therefore the list can be considered static from a saving and loading perspective. Meaning if I get a list of all savable objects, the index of item 150 will always be 150. Is this correct? If not how can I determine the correct object from the file?

My current Idea is to save object data in an array as Map Data for each savable object instead of individual save files.