32 lines
777 B
Go
32 lines
777 B
Go
package render
|
|
|
|
import (
|
|
"encoding/json"
|
|
|
|
"github.com/peterqiu0516/sub-store/internal/model"
|
|
)
|
|
|
|
// RenderJson renders proxies as a raw JSON object: {"proxies": [...]}.
|
|
func RenderJson(proxies []model.ProxyNode) string {
|
|
// Convert each ProxyNode (map[string]any) to a clean map with nil values removed
|
|
cleaned := make([]any, 0, len(proxies))
|
|
for _, p := range proxies {
|
|
cleaned = append(cleaned, stripNil(p))
|
|
}
|
|
doc := map[string]any{"proxies": cleaned}
|
|
data, _ := json.MarshalIndent(doc, "", " ")
|
|
return string(data)
|
|
}
|
|
|
|
// stripNil removes nil values from a map recursively (shallow).
|
|
func stripNil(m map[string]any) map[string]any {
|
|
result := make(map[string]any, len(m))
|
|
for k, v := range m {
|
|
if v == nil {
|
|
continue
|
|
}
|
|
result[k] = v
|
|
}
|
|
return result
|
|
}
|