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

  • Thread starter Darkmisc
  • Start date
  • Tags
    godot
In summary, to open a JSON file in Godot that contains two arrays, you first load the file using the `File` class. Then, read the contents as a string and parse it using the `JSON.parse()` method. This will convert the JSON string into a Godot Dictionary. You can then access the arrays by their respective keys. Make sure to handle any potential errors during file loading and JSON parsing to ensure smooth execution.
  • #1
Darkmisc
225
31
TL;DR Summary
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:
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.")

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:

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)

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:
save one var:
    var file = FileAccess.open(save_path, FileAccess.WRITE)
    file.store_var(Global.thing)
Thanks
 
Technology news on Phys.org
  • #2
Nvm. I saved the two arrays into a dictonary and saved the dictionary without using JSON.
 

Similar threads

Replies
4
Views
2K
Replies
13
Views
3K
Replies
23
Views
36K
Back
Top