I did some poking around, and it seems there is very little on the expected functionality of using a JSON.print with C#. In this Reddit post, someone noted that JSON.print just returns null, which after some looking brought me to this GitHub issue, which may be part of the issue? They are not getting the ID of the node though, but I wonder GD.Print(this.toString()) would return the same thing.
I'm wondering if the issue is that you cannot save a node to json using JSON.print(this). You might need to store the data you want to save/load in a dictionary, like how it is done in the Saving Games section of the Godot documentation.