public static void AssertResponseSchema <T>(this HttpResponseMessage message, bool useCamelCase = true) { NJsonSchema.Generation.JsonSchemaGeneratorSettings settings; if (useCamelCase) { settings = new NJsonSchema.Generation.JsonSchemaGeneratorSettings { SerializerSettings = new JsonSerializerSettings { ContractResolver = new DefaultContractResolver { NamingStrategy = new CamelCaseNamingStrategy() } } }; } else { settings = new NJsonSchema.Generation.JsonSchemaGeneratorSettings(); } var schema = JsonSchema.FromType <T>(settings); var errors = schema.Validate(message.Content.ReadAsStringAsync().Result); if (errors.Count > 0) { throw new SchemaValidationException(errors.Select(e => $"{e.Path}: {e.Kind}").ToList()); } }
static NJsonSchema.JsonReferenceResolver _Resolver(JSONSCHEMA schema, string basePath) { var generator = new NJsonSchema.Generation.JsonSchemaGeneratorSettings(); var solver = new NJsonSchema.JsonSchemaAppender(schema, generator.TypeNameGenerator); return(new MyReferenceResolver(solver)); }
public async Task Use_JsonSchemaGeneratorSettings_ContractResolver_For_JsonPropertyName() { var settings = new NJsonSchema.Generation.JsonSchemaGeneratorSettings(); settings.ContractResolver = new Newtonsoft.Json.Serialization.CamelCasePropertyNamesContractResolver(); //// Arrange var schema = JsonSchema.FromType <JsonPropertyAttributeTests.MyJsonPropertyTestClass>(settings); //// Act var property = schema.Properties["newName"]; //// Assert Assert.Equal("newName", property.Name); }
public HttpResponseMessage Get() { try { var settings = new NJsonSchema.Generation.JsonSchemaGeneratorSettings() { FlattenInheritanceHierarchy = true }; var schema = NJsonSchema.JsonSchema.FromType <ExternalStandard>(settings); return(Request.CreateResponse(JsonConvert.DeserializeObject(schema.ToJson()))); } catch (Exception e) { throw e; } }
// static string source_dir= @""; public static async Task jsonAsync(string file) { string directoryName = Path.GetDirectoryName(file); string base_filenname = Path.GetFileNameWithoutExtension(file); string https_schema_name = "https://schemas.insightglobal.net/" + base_filenname; string schema_text = File.ReadAllText(file); // schema_text=schema_text.Replace("$ref\": \"https://schemas.insightglobal.net/","$ref\":\"http://schema.dev.box/"); try{ NJsonSchema.Generation.JsonSchemaGeneratorSettings settings = new NJsonSchema.Generation.JsonSchemaGeneratorSettings(); Func <JsonSchema4, JsonReferenceResolver> referenceResolverFactory = schema => new JsonReferenceResolver( new NJsonSchema.JsonSchemaResolver(schema, settings) ); Console.WriteLine(file); var schema_object = await JsonSchema4.FromFileAsync(file, referenceResolverFactory).ConfigureAwait(true); // var schema_object= await JsonSchema4.FromUrlAsync(https_schema_name,referenceResolverFactory).ConfigureAwait(false); //settings //generate c# class var generator = new CSharpGenerator(schema_object); var cs_file = generator.GenerateFile(); string sub_path = directoryName.Substring(source_dir.Length - 1); string dest_filename = String.Format("{0}\\{1}\\{2}.{3}", destination_dir, sub_path, base_filenname, "cs"); //create directory string dest_file_dir = Path.GetDirectoryName(dest_filename); DirectoryInfo di = Directory.CreateDirectory(dest_file_dir); //write file File.WriteAllText(dest_filename, cs_file); } catch (Exception ex) { Console.WriteLine(ex.Message); Console.WriteLine(schema_text); } }
public async Task When_name_of_JsonPropertyAttribute_is_set_then_it_is_used_as_json_property_name_even_with_contactresolver_that_has_nameing_strategy() { var settings = new NJsonSchema.Generation.JsonSchemaGeneratorSettings(); settings.SerializerSettings = new JsonSerializerSettings { ContractResolver = new Newtonsoft.Json.Serialization.DefaultContractResolver { NamingStrategy = new Newtonsoft.Json.Serialization.CamelCaseNamingStrategy() } }; //// Arrange var schema = JsonSchema.FromType <JsonPropertyAttributeTests.MyJsonPropertyTestClass>(settings); //// Act var property = schema.Properties["NewName"]; //// Assert Assert.Equal("NewName", property.Name); }