How to open a JSON file in Godot that contains 2 arrays?

  • Thread starter Thread starter Darkmisc
  • Start date Start date
  • Tags Tags
    godot
Join the discussion
Registration is free. Ask a follow-up in this thread, or start your own.
1 reply · 4K views
Darkmisc
Messages
222
Reaction score
31
TL;DR
I've saved two arrays in a JSON file, but can't seem to open them again.
Hi everyone

I've saved two arrays into a JSON file.

This was the code I used:
[CODE lang="python" title="save"]func save():
var file = FileAccess.open("user://savedarrays.json", FileAccess.WRITE)
var file_path = "user://saved_arrays.json"

var data = {
"arrayA": Global.arrayA,
"arrayB": Global.arrayB
}
var json_string: String = JSON.stringify(data)
file.store_string(json_string)
file.close()
print("Arrays saved successfully.")

[/CODE]

When I open the file in notepad, this is what I get:
{"arrayA":["France","Spain","UK","Russia"],"arrayB":["Paris","Madrid","London","Moscow"]}

I'm using the following code to load the arrays:

[CODE lang="python" title="load"]func loadArraysFromFile():

var file = "user://savedarrays.json"
var file_text = FileAccess.get_file_as_string(file)
var parse_result = JSON.parse_string(file_text)
print(parse_result)

if parse_result.error == OK:
var parsed_data: Dictionary = parse_result.result as Dictionary

if parsed_data.has("arrayA"):
Global.arrayC = parsed_data["arrayA"]
print(Global.arrayC)
if parsed_data.has("arrayB"):
Global.arrayD = parsed_data["arrayA"]
print(Global.arrayD)[/CODE]

It prints out <null> as the parse_result.

Does anyone know what I've done wrong with the load code?

I used JSON because I read somewhere that that's what I need if I want to save two arrays under the one filename.

Elsewhere, I've used the following code to save one variable to a file:
[CODE lang="python" title="save one var"] var file = FileAccess.open(save_path, FileAccess.WRITE)
file.store_var(Global.thing)[/CODE]Thanks
 
Physics news on Phys.org
Nvm. I saved the two arrays into a dictonary and saved the dictionary without using JSON.