func myFunc() (string, error) {
file, err := os.Open("data.json")
if err != nil {
return "", fmt.Errorf("open data.json: %w", err)
}
jsonData, err := io.ReadAll(file)
if err != nil {
return "", err
}
var myData map[string]any
json.Unmarshal(jsonData, &myData)
if err != nil {
return "", fmt.Errorf("unmarshalling: %w", err)
}
val, ok := myData["name"]
if !ok {
return "", fmt.Errorf("missing name property")
}
name, ok := val.(string)
if !ok {
return "", fmt.Errorf("invalid name property")
}
return name, nil
}
func myFunc() (name string, err error) {
defer sce.PassTo(&err)
file := sce.Try1(os.Open("data.json")).Unwrap("open data.json")
jsonData := sce.Must1(io.ReadAll(file))
var myData map[string]any
sce.Check(json.Unmarshal(jsonData, &myData), "unmarshalling")
val, ok := myData["name"]
sce.Assert(ok, "missing name property")
name, ok = val.(string)
sce.Assert(ok, "invalid name property")
return
}
func myFunc() (name string, err error) {
defer sce.PassTo(&err)
file := sce.Try1(os.Open("data.json"))("open data.json")
jsonData := sce.Try1(io.ReadAll(file))()
var myData map[string]any
sce.Check(json.Unmarshal(jsonData, &myData), "unmarshalling")
val, ok := myData["name"]
sce.Assert(ok, "missing name property")
name, ok = val.(string)
sce.Assert(ok, "invalid name property")
return
}
func myFunc() (name string, err error) {
defer sce.PassTo(&err)
file := sce.T1(os.Open("data.json")).Uw("open data.json")
jsonData := sce.M1(io.ReadAll(file))
var myData map[string]any
sce.C(json.Unmarshal(jsonData, &myData), "unmarshalling")
val, ok := myData["name"]
sce.A(ok, "missing name property")
name, ok = val.(string)
sce.A(ok, "invalid name property")
return
}
func myFunc() (name string, err error) {
defer shoterr.PassTo(&err)
file := shorterr.Do(os.Open("data.json")).Or("open data.json")
jsonData := shorterr.Do(io.ReadAll(file)).Or()
var myData map[string]any
shorterr.Check(json.Unmarshal(jsonData, &myData), "unmarshalling")
val, ok := myData["name"]
shorterr.Assert(ok, "missing name property")
name, ok = val.(string)
shorterr.Assert(ok, "invalid name property")
return
}