Saving GameObject to file

Hello,
I’m new in topics like saving game progress and I have a question. What I need is to save whole GameObject to file on button click (when game is closing) and later when turning game again on I want to Instantiate that GameObject from saved file. Is there any way to do that? What i tried now is:

Doing class with GameObject:

    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
    
    [System.Serializable]
    public class SaveLevel
    {
        public GameObject Object;
    
        public SaveLevel(GameObject object)
        {
            Object = object;
        }
    
    }

And voids for buttons to save and load it:

        public void SaveLevelOnButton()
        {
            SaveLevel save = new SaveLevel(/*GameObject i want to save. Let's say:*/ ObjectToSave);
            string json = JsonUtility.ToJson(save);
            File.WriteAllText(Application.persistentDataPath + "/LevelState.json", json);
        }
        public void LoadLevelOnButton()
        {
            GameObject LoadedLevel;
            string json = File.ReadAllText(Application.persistentDataPath + "/LevelState.json");
            LoadedLevel = JsonUtility.FromJson<SaveLevel>(json).gameObject;
    
            Instantiate(LoadedLevel, new Vector3(0, 0, 0), Quaternion.identity);
        }

That code is creating the GameObject “ObjectToSave” from begin like it wasn’t saved.

I wouldn’t save GameObject.
I would save some Attributes.
Example:
A normal 3D cube:
“P-x=” + obj.transform.position.x + “P-y” + obj.transform.position.x …
You can put all that in a txt-File with System.IO;

If you want to save your game progress just use PlayerPrefs.Save()