I would like to generate classes from the epJSON schema to use in a C# propgram. I am using NJsonSchema for this and wrote the following code for the conversion:
var schemaTxt = System.IO.File.ReadAllText(path);
var schema = JsonSchema4.FromJsonAsync(schemaTxt);
var settings = new CSharpGeneratorSettings();
var generator = new CSharpGenerator(schema.Result, settings);
var file = generator.GenerateFile();
System.IO.File.WriteAllText(path + ".cs", file);
This works without errors, however, leads to a list of <string,object> dictionaries that do not carry over the properties from the schema. The structs defined in the "patternProperties" are ignored completely. Is this a non-standard implementation? I am not sure what I am doing wrong and would greatly appreciate a few pointers.
I am pasting a piece of the schema and the corresponding output below.
JSON Schema:
"epJSON_schema_version": "8.9.0",
"$schema": "http://json-schema.org/draft-04/schema#",
"required": [
"Building",
"GlobalGeometryRules"
],
"properties": {
"Site:GroundTemperature:Undisturbed:KusudaAchenbach": {
"name": {
"is_required": true,
"type": "string",
"reference": [
"UndisturbedGroundTempModels"
]
},
"min_fields": 7.0,
"patternProperties": {
".*": {
"required": [
"soil_thermal_conductivity",
"soil_density",
"soil_specific_heat"
],
"properties": {
"soil_thermal_conductivity": {
"units": "W/m-K",
"minimum": 0.0,
"type": "number",
"exclusiveMinimum": true
},
... removed several properties for clarity ...
},
"type": "object"
}
},
C# class output
[Newtonsoft.Json.JsonProperty("Site:GroundTemperature:Undisturbed:KusudaAchenbach", Required = Newtonsoft.Json.Required.DisallowNull, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)]
public System.Collections.Generic.Dictionary<string, object> Site_GroundTemperature_Undisturbed_KusudaAchenbach { get; set; } = new System.Collections.Generic.Dictionary<string, object>();