jwatte is right you need to load the soft pointer otherwise it’s null (that is why it saves memory)
Try something like this
void USpawnerSettings::Load(){
FSoftObjectPath AssetData = DataInfo.ToSoftObjectPath();
if (AssetData.IsValid()) {
USpawnerDataInfo * LoadedAsset = Cast<USpawnerDataInfo>(AssetData.TryLoad());
};
}
LoadedAsset should be the retrieved asset from the soft pointer.