Private/ConvertTo-JsonType.ps1

function ConvertTo-JsonType {
    <#
        .Synopsis
        Converts a PowerShell type name to a JSON schema type.
        .Example
        ConvertTo-JsonType -PStypeName $Path
 
        .Notes
 
    #>

    [CmdletBinding()]
    param(
        # Parameter help description
        [Parameter(
            Mandatory,
            Position = 0,
            ValueFromPipeline
        )]
        [ValidateNotNullOrEmpty()]
        [Alias("Type")]
        $PSTypeName
    )

    process {
        $jsonType = switch -Regex ($PSTypeName) {
            "String" { "string" }
            "Int32" { "integer" }
            "Int64" { "integer" }
            "Boolean" { "boolean" }
            "Double" { "number" }
            "Decimal" { "number" }
            "DateTime" { "string" }
            "SwitchParameter" { "boolean" }
            "Object" { "object" }
            "Hashtable" { "object" }
            "Array" { "array" }
            default { "string" }
        }
        # Check if the type is an array
        if ($PSTypeName -match "\[\]$") {
            return @{
                type  = "array"
                items = @{
                    type = $jsonType
                }
            }
        }
        else {
            return @{type = $jsonType }
        }
    }
}