Working ProgramsJSON, CSV, and Codec Values
Blorp by Example

JSON, CSV, and Codec Values

Use format modules to parse data, inspect it, validate it, and encode output.

Parse

json.parse_json and csv.parse_csv turn text into structured values.

parse-json.brp
parsed: Result[JsonValue, String] = parse_json(text)

Inspect

JSON accessors return Option so missing fields stay explicit.

inspect-json.brp
name: Option[String] = value.get_field("name").and_then(func(v): v.as_string())

Validate

codec-style decoders model validation as Result.

validate.brp
name ?= value.get_field("name").ok_or("missing name")

Encode

CSV rows can be formatted back into text.

encode-csv.brp
csv_text: String = format_csv([["name"], ["Ada"]])

Example

users-csv.brp
import:
	csv: format_csv
	json: JsonValue(JsonVector), as_string, get_field, parse_json


pure func user_name(value: JsonValue) -> Option[String]:
	field ?= value.get_field("name")
	field.as_string()


func main(args: List[String]) -> Void:
	match parse_json("[{\"name\":\"Ada\"}]"):
		Ok(JsonVector(users)):
			match users.get(0):
				Some(user):
					rows: List[List[String]] = [["name"], [user_name(user).get_or("")]]
					print(format_csv(rows))
				None:
					print("name")
		Ok(_): print("expected array")
		Err(msg): print(msg)

Try It

terminal
blorp run users-csv.brp