toJson method
Implementation
Map<String, dynamic> toJson() {
final received = raw?.toJson() ?? const <String, Object?>{};
// What was received under [capability].[sub], when it is declared.
Map<String, dynamic> part(String capability, String sub) {
final c = received[capability];
final v = c is Map ? c[sub] : null;
return v is Map ? Map<String, dynamic>.from(v) : <String, dynamic>{};
}
const named = {'roots', 'sampling', 'elicitation', 'tasks', 'experimental', 'extensions'};
return {
for (final e in received.entries)
if (!named.contains(e.key)) e.key: e.value,
if (rootsDeclared) 'roots': {if (rootsListChanged) 'listChanged': true},
if (samplingDeclared)
'sampling': {
if (samplingContext) 'context': part('sampling', 'context'),
if (samplingTools) 'tools': part('sampling', 'tools'),
},
if (elicitationDeclared)
'elicitation': {
if (elicitationForm) 'form': part('elicitation', 'form'),
if (elicitationUrl) 'url': part('elicitation', 'url'),
},
if (tasks != null) 'tasks': tasks,
if (experimental != null && experimental!.isNotEmpty) 'experimental': experimental,
if (extensions != null && extensions!.isNotEmpty) 'extensions': extensions,
};
}