(value string)
| 256 | return strconv.FormatInt(v, 10) |
| 257 | case float64: |
| 258 | return strconv.FormatFloat(v, 'f', -1, 64) |
| 259 | case []string: |
| 260 | parts := make([]string, 0, len(v)) |
| 261 | for _, item := range v { |
| 262 | parts = append(parts, pythonCompactJSON(item)) |
| 263 | } |
| 264 | return "[" + strings.Join(parts, ",") + "]" |
| 265 | case map[string]string: |
| 266 | keys := make([]string, 0, len(v)) |
| 267 | for key := range v { |
| 268 | keys = append(keys, key) |
| 269 | } |
| 270 | sort.Strings(keys) |
| 271 | parts := make([]string, 0, len(keys)) |
| 272 | for _, key := range keys { |
| 273 | parts = append(parts, pythonJSONString(key)+":"+pythonCompactJSON(v[key])) |
| 274 | } |
| 275 | return "{" + strings.Join(parts, ",") + "}" |
| 276 | case map[string]any: |
| 277 | keys := make([]string, 0, len(v)) |
| 278 | for key := range v { |
| 279 | keys = append(keys, key) |
| 280 | } |
| 281 | sort.Strings(keys) |
| 282 | parts := make([]string, 0, len(keys)) |
| 283 | for _, key := range keys { |
| 284 | parts = append(parts, pythonJSONString(key)+":"+pythonCompactJSON(v[key])) |
| 285 | } |
| 286 | return "{" + strings.Join(parts, ",") + "}" |
| 287 | default: |
| 288 | return pythonJSONString(fmt.Sprint(v)) |
| 289 | } |
| 290 | } |
| 291 | |
| 292 | func pythonJSONString(value string) string { |
| 293 | var b strings.Builder |
| 294 | b.WriteByte('"') |
| 295 | for _, r := range value { |
| 296 | switch r { |
| 297 | case '\\': |
no test coverage detected