Json problem saving/loading

Godot Version

4.3

Question

hello, i want to learn how to do saves, im doing this tutorial https://youtu.be/bPbeeS5V2bE and everyone is happy bla bla but i get errors and what is more i dont know how to convert dictionary into variables back, can someone help? here are screenshot and code

image

extends Control
var zmienna1=1   #zmienna means variable
var zmienna2=2
var zmienna3=3
var zmienna4=4

func save():
	var save_dict ={
		"zmienna1" : zmienna1,
		"zmienna2" : zmienna2,
		"zmienna3" : zmienna3,
		"zmienna4" : zmienna4
	}
	return save_dict

func zapisz_gre(): #save game
	#saved game
	var zapisana_gra = FileAccess.open("user//savegame.save", FileAccess.WRITE)
	
	var json_string = JSON.stringify(save())
	
	zapisana_gra.store_line(json_string)

func zaladuj_gre():    #means load_game
	if not FileAccess.file_exists("user//savegame.save"):
		return
	var zapisana_gra = FileAccess.open("user//savegame.save", FileAccess.READ)
	
	while zapisana_gra.get_position() < zapisana_gra.get_length():
		var json_string = zapisana_gra.get_line()
		var json = JSON.new()
		var parse_result = json.parse(json_string)
		var node_data = json.get_data()

func _on_zapisz_pressed():
	save()
	zapisz_gre()
	print("zapisano")

thats all the code, it was my test project,

zapisana_gra is null because the file failed to open. Your path needs a colon after “user”

"user://savegame.save"
1 Like

Yes, you’re missing colons in the paths as @gertkeno mentioned.

And answering your second question

i dont know how to convert dictionary into variables back, can someone help?

You can read the whole file as a Dictionary, no need to go line by line. Then assign your variables values from the Dictionary

func load() -> void:
	var file: FileAccess = FileAccess.open("user://savegame.save", FileAccess.READ)
	var data: Dictionary = JSON.parse_string(file.get_as_text())
	file.close()
	
	zmienna1 = data.zmienna1
	zmienna2 = data.zmienna2
	zmienna3 = data.zmienna3
	zmienna4 = data.zmienna4

how silly of me thank you very much and sorry

oh thank you also very much thats way simpler than i thought

edit: bro u goat its way easier and fun