toJson method
Convert to standard JSON JSONSchema object.
Reference: https://ai.google.dev/api/caching#FunctionDeclaration
Implementation
@override
Map<String, Object> toJson() => {
if (type != SchemaType.anyOf && type != SchemaType.ref)
'type': nullable == true ? [type.name, 'null'] : type.name,
if (ref case final ref?) r'$ref': ref,
if (defs case final defs?)
r'$defs': {
for (final MapEntry(:key, :value) in defs.entries)
key: value.toJson()
},
if (format case final format?) 'format': format,
if (description case final description?) 'description': description,
if (title case final title?) 'title': title,
if (enumValues case final enumValues?) 'enum': enumValues,
if (items case final items?) 'items': items.toJson(),
if (minItems case final minItems?) 'minItems': minItems,
if (maxItems case final maxItems?) 'maxItems': maxItems,
if (minimum case final minimum?) 'minimum': minimum,
if (maximum case final maximum?) 'maximum': maximum,
if (properties case final properties?)
'properties': {
for (final MapEntry(:key, :value) in properties.entries)
key: value.toJson()
},
// Calculate required properties based on optionalProperties
if (properties != null)
'required': optionalProperties != null
? properties!.keys
.where((key) => !optionalProperties!.contains(key))
.toList()
: properties!.keys.toList(),
if (anyOf case final anyOf?)
'anyOf': anyOf.map((e) => e.toJson()).toList(),
};