JSON does not round trip

Godot’s JSON implementation cannot round trip values. For example, this code…

extends Node
 
func _ready() -> void:
	var value: Vector2i = Vector2i(3,2)
	var string = JSON.stringify(value)
	print("String: ", string)
 
	var parsed = JSON.parse_string(string)
	print("Value: ", parsed)
	print("Value is String? ", parsed is String)
	print("Value is Vector2i? ", parsed is Vector2i)

…prints this output:

String: "(3, 2)"
Value: (3, 2)
Value is String? true
Value is Vector2i? false

Instead of storing data in JSON, consider using store_var and get_var in FileAccess instead (see: Arbitrary Code Execution in Godot serialization).

History