package szlib import "core:encoding/json" import "core:fmt" import "core:os" write_dataset_to_json :: proc(dataset: Dataset, json_path: string) -> (ok: bool) { json_data, err := json.marshal(dataset, {pretty = true, use_enum_names = true}) if err != nil { fmt.eprintfln("Unable to marshal JSON: %v", err) return false } werr := os.write_entire_file_or_err(json_path, json_data) if werr != nil { fmt.eprintfln("Unable to write JSON: %v", err) return false } return true } parse_json_to_dataset :: proc(json_path: string) -> (result: Dataset, ok: bool) { dataset: Dataset data, data_ok := os.read_entire_file_from_filename(json_path) if !data_ok { fmt.eprintln("Failed to load the file") return dataset, false } defer delete(data) json_data, err := json.parse(data) if err != .None { fmt.eprintln("Failed to parse JSON file.") fmt.eprintln("Error: ", err) return dataset, false } defer json.destroy_value(json_data) root := json_data.(json.Object) error := json.unmarshal(data, &dataset) if error != nil { fmt.eprintln("Could not unmarshal json data to Dataset:", error) return dataset, false } return dataset, true }