Instantly share code, notes, and snippets.

Embed
What would you like to do?
Validate Schema from PowerShell
$ErrorActionPreference = "Stop"
$NewtonsoftJsonPath = Resolve-Path -Path "bin\Newtonsoft.Json.dll"
$NewtonsoftJsonSchemaPath = Resolve-Path -Path "bin\Newtonsoft.Json.Schema.dll"
Add-Type -Path $NewtonsoftJsonPath
Add-Type -Path $NewtonsoftJsonSchemaPath
$source = @'
public class Validator
{
public static System.Collections.Generic.IList<string> Validate(Newtonsoft.Json.Linq.JToken token, Newtonsoft.Json.Schema.JSchema schema)
{
System.Collections.Generic.IList<string> messages;
Newtonsoft.Json.Schema.SchemaExtensions.IsValid(token, schema, out messages);
return messages;
}
}
'@
Add-Type -TypeDefinition $source -ReferencedAssemblies $NewtonsoftJsonPath,$NewtonsoftJsonSchemaPath
$Json = @'
{"prop1":"value"}
'@
$SchemaJson = @'
{"type":"array"}
'@
write-host "=========================" -foregroundcolor "white"
write-host "Json.NET Schema Validator" -foregroundcolor "white"
write-host "=========================" -foregroundcolor "white"
write-host
write-host "Json: $Json"
write-host "SchemaJson: $SchemaJson"
$Token = [Newtonsoft.Json.Linq.JToken]::Parse($Json)
$Schema = [Newtonsoft.Json.Schema.JSchema]::Parse($SchemaJson)
$ErrorMessages = [Validator]::Validate($Token, $Schema)
$IsValid = $ErrorMessages.Count -eq 0
write-host "Schema is valid: $IsValid" -foregroundcolor "white"
foreach ($ErrorMessage in $ErrorMessages) {
write-host $ErrorMessage -foregroundcolor "red"
}
write-host
@vladpopov

This comment has been minimized.

vladpopov commented Mar 20, 2018

Hi James,
this code sample is working fine using Powershell.exe or Powershell ISE but not on Visual Studio Code. I wrote more details on Stackoverflow question. Can you please have a quick look to it?

Thanks
--Vlad

@Mark-Foresta

This comment has been minimized.

Mark-Foresta commented Nov 15, 2018

I have been unable to get this to work. When running this code I get the error:

Add-Type : Could not load file or assembly PATH\Newtonsoft.Json.Schema.dll' or one of 
its dependencies. Operation is not supported. (Exception from HRESULT: 0x80131515)

I have verified that all files are unblocked

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment