toJson method

Map<String, Object> toJson()

Convert to json object.

Implementation

Map<String, Object> toJson() => {
      if (type != SchemaType.anyOf)
        'type': type.toJson(), // Omit the field while type is anyOf
      if (format case final format?) 'format': format,
      if (description case final description?) 'description': description,
      if (title case final title?) 'title': title,
      if (nullable case final nullable?) 'nullable': nullable,
      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 (propertyOrdering case final propertyOrdering?)
        'propertyOrdering': propertyOrdering,
      if (anyOf case final anyOf?)
        'anyOf': anyOf.map((e) => e.toJson()).toList(),
    };