protected override void ProcessRecord() { WriteDebug(string.Format("Continue: {0}", _Continue)); if (!_Continue) { return; } Encoding enc = null; switch (this.Encoding) { case EncodingType.ASCII: WriteVerbose("Using ASCII encoding."); enc = System.Text.Encoding.ASCII; break; case EncodingType.BigEndianUnicode: WriteVerbose("Using Big Endian Unicode encoding."); enc = System.Text.Encoding.BigEndianUnicode; break; case EncodingType.Unicode: WriteVerbose("Using Unicode encoding."); enc = System.Text.Encoding.Unicode; break; case EncodingType.UTF32: WriteVerbose("Using UTF32 encoding."); enc = System.Text.Encoding.UTF32; break; case EncodingType.UTF7: WriteVerbose("Using UTF7 encoding."); enc = System.Text.Encoding.UTF7; break; case EncodingType.UTF8: WriteVerbose("Using UTF8 encoding."); enc = System.Text.Encoding.UTF8; break; case EncodingType.Default: default: enc = System.Text.Encoding.Default; WriteVerbose(string.Format("Using System's Default encoding. ({0})", enc.EncodingName)); break; } JSchemaUrlResolverEvent resolver = new JSchemaUrlResolverEvent(); resolver.SchemaResolving += Resolver_SchemaResolving; this._JsonFile = TransformPath(this._JsonFile); WriteVerbose("Reading JSON File."); string sJson = File.ReadAllText(this._JsonFile, enc); WriteVerbose("Parsing JSON File."); var json = JObject.Parse(sJson); string sSchema = string.Empty; if (this.SchemaInJsonFile) { WriteVerbose("Read schema file path from JSON file."); if (json["$schema"] == null || string.IsNullOrWhiteSpace(json["$schema"].Value <string>())) { throw new PSInvalidOperationException("No $schema property defined in JSON file."); } this._SchemaFile = json["$schema"].Value <string>(); WriteVerbose($"Found schema file path [{this._SchemaFile}] in JSON data file [{this._JsonFile}]."); } this._SchemaFile = TransformPath(this._SchemaFile); WriteVerbose("Reading Schema File."); sSchema = File.ReadAllText(this._SchemaFile, enc); // load schema WriteVerbose("Parsing Schema File."); var schema = JSchema.Parse(sSchema, resolver); IList <ValidationError> errors = new List <ValidationError>(); //if (this.ErrorAsObject) { // errors = new List<ValidationError>(); //} else { // errors = new List<string>(); //} // validate JSON WriteVerbose("Testing JSON file against schema."); var valid = SchemaExtensions.IsValid(json, schema, out errors); // return error messages and line info WriteObject(new SchemaTestResult <ValidationError>() { Valid = valid, Errors = valid ? null : errors }); base.ProcessRecord(); }