Files
sessionzero-odin/szlib/sz_parser.odin
2026-01-19 20:50:02 -06:00

53 lines
1.2 KiB
Odin

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
}