package langext import ( "bytes" "encoding/json" "fmt" ) type H map[string]any type A []any func TryPrettyPrintJson(str string) string { var prettyJSON bytes.Buffer if err := json.Indent(&prettyJSON, []byte(str), "", " "); err != nil { return str } return prettyJSON.String() } func PrettyPrintJson(str string) (string, bool) { var prettyJSON bytes.Buffer if err := json.Indent(&prettyJSON, []byte(str), "", " "); err != nil { return str, false } return prettyJSON.String(), true } func PatchJson[JV string | []byte](rawjson JV, key string, value any) (JV, error) { var err error var jsonpayload map[string]any err = json.Unmarshal([]byte(rawjson), &jsonpayload) if err != nil { return *new(JV), fmt.Errorf("failed to unmarshal payload: %w", err) } jsonpayload[key] = value newjson, err := json.Marshal(jsonpayload) if err != nil { return *new(JV), fmt.Errorf("failed to re-marshal payload: %w", err) } return JV(newjson), nil } func PatchRemJson[JV string | []byte](rawjson JV, key string) (JV, error) { var err error var jsonpayload map[string]any err = json.Unmarshal([]byte(rawjson), &jsonpayload) if err != nil { return *new(JV), fmt.Errorf("failed to unmarshal payload: %w", err) } delete(jsonpayload, key) newjson, err := json.Marshal(jsonpayload) if err != nil { return *new(JV), fmt.Errorf("failed to re-marshal payload: %w", err) } return JV(newjson), nil }