Better way to handle serialization/deserialization with custom resource formats?

Check the example:

@tool
extends EditorScript


func _run() -> void:
	var saver = MySaver.new()
	var loader = MyLoader.new()
	ResourceSaver.add_resource_format_saver(saver)
	ResourceLoader.add_resource_format_loader(loader)

	var my_res = MyResource.new()
	my_res.name = "John"
	my_res.age = 30

	ResourceSaver.save(my_res, "user://save01.save")

	var res2 = load("user://save01.save")

	printt(res2.name, res2.age)


class MyResource extends Resource:

	@export var name: String
	@export var age: int


class MySaver extends ResourceFormatSaver:


	func _get_recognized_extensions(resource: Resource) -> PackedStringArray:
		if resource is MyResource:
			return ["save"]

		return []


	func _recognize(resource: Resource) -> bool:
		return resource is MyResource


	func _save(resource: Resource, path: String, flags: int) -> Error:
		# Open the file to save
		var file = FileAccess.open(path, FileAccess.WRITE)
		var err = FileAccess.get_open_error()
		if err != OK:
			return err

		# Gather the properties to save
		var save_props = {}
		for prop in resource.get_property_list():
			if prop.name == "script":
				# SKIP script
				continue
			if prop.usage & PROPERTY_USAGE_STORAGE == PROPERTY_USAGE_STORAGE:
				# Only get the ones marked as PROPERTY_USAGE_STORAGE
				save_props.set(prop.name, resource.get(prop.name))

		# Save them
		var json = JSON.stringify(save_props)
		file.store_string(json)

		return OK


class MyLoader extends ResourceFormatLoader:


	func _get_recognized_extensions() -> PackedStringArray:
		return ["save"]


	func _handles_type(type: StringName) -> bool:
		return type == "MyResource"


	func _load(path: String, original_path: String, use_sub_threads: bool, cache_mode: int) -> Variant:
		# Open and parse the file to load
		var file = FileAccess.get_file_as_string(path)
		var json = JSON.parse_string(file)
		
		# Create a MyResource
		var res = MyResource.new()

		# For each entry in the json set the value in the resource
		for prop in json.keys():
			res.set(prop, json.get(prop))

		return res