func()

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)
}