mirror of
https://github.com/glanceapp/glance.git
synced 2025-08-09 07:44:59 +02:00
Update function for iterating over object entries
This commit is contained in:
@ -232,8 +232,8 @@ JSON response:
|
||||
To loop through each property of the object, you would use the following:
|
||||
|
||||
```html
|
||||
{{ range .JSON.Object "user" }}
|
||||
<div>{{ .Key }}: {{ .Value.String "" }}</div>
|
||||
{{ range $key, $value := .JSON.Entries "user" }}
|
||||
<div>{{ $key }}: {{ $value.String "" }}</div>
|
||||
{{ end }}
|
||||
```
|
||||
|
||||
@ -245,7 +245,7 @@ Output:
|
||||
<div>active: true</div>
|
||||
```
|
||||
|
||||
Each property in the object is exposed as a pair, with `.Key` giving the property name and `.Value` providing access to the value using the usual JSON methods.
|
||||
Each property in the object is exposed as a pair, with `$key` being a string and `$value` providing access to the value using the usual JSON methods.
|
||||
|
||||
<hr>
|
||||
|
||||
|
@ -8,6 +8,7 @@ import (
|
||||
"fmt"
|
||||
"html/template"
|
||||
"io"
|
||||
"iter"
|
||||
"log/slog"
|
||||
"math"
|
||||
"net/http"
|
||||
@ -420,19 +421,7 @@ func (r *decoratedGJSONResult) Get(key string) *decoratedGJSONResult {
|
||||
return &decoratedGJSONResult{r.Result.Get(key)}
|
||||
}
|
||||
|
||||
func gjsonResultObjectToPropertyArray(obj gjson.Result) []ObjectProperty {
|
||||
results := make([]ObjectProperty, 0)
|
||||
obj.ForEach(func(k, v gjson.Result) bool {
|
||||
results = append(results, ObjectProperty{
|
||||
Key: k.String(),
|
||||
Value: decoratedGJSONResult{v},
|
||||
})
|
||||
return true
|
||||
})
|
||||
return results
|
||||
}
|
||||
|
||||
func (r *decoratedGJSONResult) Object(key string) []ObjectProperty {
|
||||
func (r *decoratedGJSONResult) Entries(key string) iter.Seq2[string, *decoratedGJSONResult] {
|
||||
var obj gjson.Result
|
||||
if key == "" {
|
||||
obj = r.Result
|
||||
@ -440,10 +429,11 @@ func (r *decoratedGJSONResult) Object(key string) []ObjectProperty {
|
||||
obj = r.Result.Get(key)
|
||||
}
|
||||
|
||||
if !obj.IsObject() {
|
||||
return []ObjectProperty{}
|
||||
return func(yield func(string, *decoratedGJSONResult) bool) {
|
||||
obj.ForEach(func(k, v gjson.Result) bool {
|
||||
return yield(k.String(), &decoratedGJSONResult{v})
|
||||
})
|
||||
}
|
||||
return gjsonResultObjectToPropertyArray(obj)
|
||||
}
|
||||
|
||||
func customAPIDoMathOp[T int | float64](a, b T, op string) T {
|
||||
|
Reference in New Issue
Block a user