Adding upstream version 3.10.8.
Signed-off-by: Daniel Baumann <daniel@debian.org>
This commit is contained in:
parent
37e9b6d587
commit
03bfe4079e
356 changed files with 28857 additions and 0 deletions
51
util/json.go
Normal file
51
util/json.go
Normal file
|
@ -0,0 +1,51 @@
|
|||
// Copyright Earl Warren <contact@earl-warren.org>
|
||||
// Copyright Loïc Dachary <loic@dachary.org>
|
||||
// SPDX-License-Identifier: MIT
|
||||
|
||||
package util
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
)
|
||||
|
||||
func jsonMap[T any](data any, key string) T {
|
||||
return jsonGet[T](jsonGetObject(data)[key])
|
||||
}
|
||||
|
||||
func jsonGetObject(data any) map[string]any {
|
||||
switch v := data.(type) {
|
||||
case nil:
|
||||
return nil
|
||||
case map[string]any:
|
||||
return v
|
||||
default:
|
||||
panic(fmt.Errorf("unexpected %T", data))
|
||||
}
|
||||
}
|
||||
|
||||
func jsonElement[T any](data any, index int) T {
|
||||
return jsonGet[T](jsonGetArray(data)[index])
|
||||
}
|
||||
|
||||
func jsonGetArray(data any) []any {
|
||||
switch v := data.(type) {
|
||||
case nil:
|
||||
return nil
|
||||
case []any:
|
||||
return v
|
||||
default:
|
||||
panic(fmt.Errorf("unexpected %T", data))
|
||||
}
|
||||
}
|
||||
|
||||
func jsonGet[T any](data any) T {
|
||||
switch v := data.(type) {
|
||||
case nil:
|
||||
var s T
|
||||
return s
|
||||
case T:
|
||||
return v
|
||||
default:
|
||||
panic(fmt.Errorf("unexpected %T", data))
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue