Functions/GenXdev.Helpers/Remove-JSONComments.ps1

################################################################################
<#
.SYNOPSIS
Removes comments from JSON content.
 
.DESCRIPTION
Processes JSON content and removes both single-line and multi-line comments while
preserving the JSON structure. This is useful for cleaning up JSON files that
contain documentation comments before parsing.
 
.PARAMETER Json
The JSON content to process as a string array. Each element represents a line of
JSON content.
 
.EXAMPLE
$jsonContent = @'
{
    // This is a comment
    "name": "test", /* inline comment */
    /* multi-line
       comment */
    "value": 123
}
'@ -split "`n"
Remove-JSONComments -Json $jsonContent
 
.EXAMPLE
$jsonContent | Remove-JSONComments
#>

function Remove-JSONComments {

    [CmdletBinding()]
    param(
        ########################################################################
        [Parameter(
            Mandatory = $true,
            Position = 0,
            ValueFromPipeline = $true,
            HelpMessage = "JSON content to process as string array"
        )]
        [string[]] $Json
    )

    begin {
        # inform user that processing is starting
        Write-Verbose "Starting JSON comment removal process"
    }

    process {
        # remove comments from json using the helper class
        [GenXdev.Helpers.Serialization]::RemoveJSONComments($Json)
    }

    end {
        # inform user that processing is complete
        Write-Verbose "Completed JSON comment removal process"
    }
}
################################################################################