Files

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
}