// std/json — JSON utility patterns
//
// Import with: import "std/json"
/**
* Pretty-print a value as indented JSON (2-space indent).
* pretty.
*/
pub fn pretty(value) {
return json_stringify(value)
}
/**
* Safely parse JSON, returning nil on failure instead of throwing.
* safe_parse.
*/
pub fn safe_parse(text) {
let result = try { json_parse(text) }
if is_ok(result) {
return unwrap(result)
}
return nil
}
/**
* Merge two dicts (shallow). Keys in b override keys in a.
* merge.
*/
pub fn merge(a, b) {
var result = a
for entry in b {
result = result + {[entry.key]: entry.value}
}
return result
}
/**
* Pick specific keys from a dict.
* pick.
*/
pub fn pick(data, keys) {
var result = {}
for k in keys {
if data[k] != nil {
result = result + {[k]: data[k]}
}
}
return result
}
/**
* Omit specific keys from a dict.
* omit.
*/
pub fn omit(data, keys) {
let exclude = set(keys)
var result = {}
for entry in data {
if !set_contains(exclude, entry.key) {
result = result + {[entry.key]: entry.value}
}
}
return result
}