in resources/resources.go [400:438]
func (s Session) MarshalJSON() ([]byte, error) {
rawFields := make(map[string]any)
for k, v := range s.rawFields {
rawFields[k] = v
}
if len(s.ID) > 0 {
rawFields["id"] = s.ID
}
if len(s.Path) > 0 {
rawFields["path"] = s.Path
}
if len(s.Name) > 0 {
rawFields["name"] = s.Name
}
if len(s.Type) > 0 {
rawFields["type"] = s.Type
}
if len(s.Notebook) > 0 {
rawFields["notebook"] = s.Notebook
}
if s.Kernel == nil {
return json.Marshal(rawFields)
}
kernelBytes, err := json.Marshal(s.Kernel)
if err != nil {
return nil, fmt.Errorf("failure unmarshalling a nested `kernel` field: %w", err)
}
kernelMap := make(map[string]any)
if err := json.Unmarshal(kernelBytes, &kernelMap); err != nil {
return nil, fmt.Errorf("failure unmarshalling a nested `kernel` field: %w", err)
}
for k, v := range kernelMap {
if v == nil {
delete(kernelMap, k)
}
}
rawFields["kernel"] = kernelMap
return json.Marshal(rawFields)
}